PureScript - 简单的多行计算

PureScript - Simple Multiline Computation

考虑以下 JavaScript 函数,它在多行上执行计算以清楚地表明程序员的意图:

function computation(first, second) {
  const a = first * first;
  const b = second - 4;
  const c = a + b;
  return c;
}

computation(12, 3)
//143

computation(-3, 2.6)
//7.6

我曾尝试使用 do 表示法通过 PureScript 解决此问题,但我似乎对一些关键概念还不够了解。文档中的 do 表示法示例仅涵盖当绑定的值是数组 (https://book.purescript.org/chapter4.html#do-notation) 时的 do 表示法,但在我的示例中,我希望这些值是 Int 或 Number 类型的简单值。

虽然可以在一行中执行此计算,但这会使代码更难调试,并且无法扩展到许多操作。

如何在 PureScript 中正确编写 computation 方法,以便...

  1. 如果 computation 涉及 1000 个中间步骤,而不是 3 个,代码不会受到过度缩进的影响,但会尽可能地具有可读性

  2. 计算的每一步都在自己的行上,因此,例如,主管等可以逐行检查代码的质量

您不需要 do 符号。 do 表示法用于 monad 中发生的计算,而您的计算是裸露的。

要在返回结果之前定义一些中间值,请使用 let .. in 结构:

computation first second =
  let a = first * first
      b = second - 4
      c = a + b
  in c

但如果你真的想使用do,你也可以这样做:它也支持裸计算只是给你一些选择。不同之处在于,在 do 中,您可以在同一级别上有多个 let(它们的工作方式与具有多个定义的 let 相同)并且您不需要 in:

computation first second = do
  let a = first * first -- first let
      b = second - 4
  let c = a + b         -- second let
  c                     -- no in