在Haskell中重用Lambda函数

Asa*_*saf 7 haskell lambda-calculus

我应该采取这个代码:

f x y z = x^3 - g (x + g (y - g z) + g (z^2))
 where g x = 2*x^2 + 10*x + 1
Run Code Online (Sandbox Code Playgroud)

并在没有(或让)的情况下重写它.

他们的意思是用Lambda函数写它(\ x - > ...)

我正在尝试在Haskell上重用Lambda函数.有任何想法吗?

ham*_*mar 12

正如bravit暗示的那样,你可以let通过以下方式使用lambda 重写非递归:

let x = A in B     ==>     (\x -> B) A 
Run Code Online (Sandbox Code Playgroud)

其中x是一个变量,A并且B是表达式.

  • @Asaf这里有一个提示:记住lambda的参数可能是_themelves_是函数. (6认同)
  • 我觉得这个技巧很有趣的是它实际上是Javascript中的标准做法,因为只有函数可以在那里引入一个范围块. (5认同)

bra*_*vit 8

要重用某些东西,你可以使它成为某种东西的论据.