Mik*_*ard 5 functional-programming
我一直在尝试在我的编程中采用一种函数式语言。我使用 C# 并严重依赖 LINQ 和其他函数式构造。目前我专注于榆树。
继续困扰我的一件事是函数中缺少括号。数学表达式使用它们:
f(z) = ln(z) + 1
Run Code Online (Sandbox Code Playgroud)
然而,在许多函数式语言中,这被写为:
f z = ln z + 1
Run Code Online (Sandbox Code Playgroud)
这只是一种风格,还是这里有更深层次的东西?
函数式语言植根于lambda 演算,它不使用括号进行函数式应用。
这确实是一个语法问题,但应用函数的方式将括号省略是有意义的,因为具有两个参数的函数首先将最左边的参数应用于该函数,并输出第二个参数使用的函数。例如您习惯使用的功能:
add(x,y) { return x + y }
Run Code Online (Sandbox Code Playgroud)
从功能上来说是
add x y
add :: Int->Int->Int
Run Code Online (Sandbox Code Playgroud)
其中应用 x 之后的中间步骤返回另一个函数
add 4 -- returns a function that will return 4 + y, when y is applied
add 4 :: Int->Int
Run Code Online (Sandbox Code Playgroud)
在某种程度上,这有助于避免与您所习惯的编程语言混淆,因为 add(4) 会抛出错误。它读起来更像是具有结合性的数学((add x) y)。