vik*_*ata 1 recursion lambda haskell fixpoint-combinators
似乎函数应该具有递归的名称(为了调用自身),那么lambda函数如何递归?
我搜索了维基百科,它说这可以通过"Y-combinator"来完成.我没有太多的数学理论背景,只是告诉我"Y-combinator"是由Haskell自己发现的.在Haskell语言中称为"fix"关键字,我试过:
Prelude> let fact = fix (\f n -> if n == 0 then 1 else n * (f (n-1)))
<interactive>:17:12: Not in scope: ‘fix’
Run Code Online (Sandbox Code Playgroud)
似乎失败,但如何使用"修复"关键字来做我所期望的?
Seb*_*edl 12
fix不是关键字,它是Data.Function模块中定义的函数.因此,要使用它,您必须导入该模块.
import Data.Function
Run Code Online (Sandbox Code Playgroud)
或在GHCi中:
:m Data.Function
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |