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
方法,以便...
如果 computation
涉及 1000 个中间步骤,而不是 3 个,代码不会受到过度缩进的影响,但会尽可能地具有可读性
计算的每一步都在自己的行上,因此,例如,主管等可以逐行检查代码的质量
您不需要 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
考虑以下 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
方法,以便...
如果
computation
涉及 1000 个中间步骤,而不是 3 个,代码不会受到过度缩进的影响,但会尽可能地具有可读性计算的每一步都在自己的行上,因此,例如,主管等可以逐行检查代码的质量
您不需要 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