学习elm,但不能通过以下方式获得作者的意思:
我们可以避免编写括号的原因是因为函数 申请人员在左边。
答案 0 :(得分:8)
在函数名称之后指定的任何值或函数将自动与函数相关联,这实际上就是它的全部意义。
在JavaScript中,您可以像JavaScript一样明确区分函数的用法:
function foo (message) {
return message
}
console.log(foo) // Function as expression.
console.log(foo('Hello')) // Function application with result: "Hello"
在Elm中,这种行为不需要进行肠胃外检查。
foo message =
message
foo -- Function as expression.
foo "Hello" -- Function application with result: "Hello"
当你想要应用函数并对结果做某事时,它根本不像在JavaScript中。在这里,您必须明确地告诉编译器,(foo "Hello")
是String.toUpper
的单个参数
String.toUpper (foo "Hello") -- "HELLO"
答案 1 :(得分:2)
有问题的括号是((divide 5) 2)
。我对该句子的解释是,您可以将((divide 5) 2)
写为divide 5 2
,因为divide 5 2
首先从左侧开始评估,即divide 5 -> divide5
然后divide5 2 -> 2.5
。
虽然我看不出它是如何被评估的! 5 2
和divide 2
然后divide2 5
都没有意义。