我很困惑,为什么我的功能nest,其组成f与自己n时代
nest f 0 = id
nest f n = f . nest f (n - 1)
Run Code Online (Sandbox Code Playgroud)
永不终止。我本以为在n为零的情况下会“匹配模式” 。我通过在GHCI中键入这两行并使用nest (+ 1) 2 3进行调用来定义它。
Emi*_*ily 12
通过在两条单独的REPL行上键入该函数,实际上是在第二次重新定义它,而忽略了基本情况。
将此功能输入REPL的正确方法是:
nest f 0 = id; nest f n = f . nest f (n - 1)
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用:{命令进入多行模式,然后使用保留它:}。
当您将其粘贴到GHCi中时,您所做的就是定义的一个功能nest f 0 = id。然后您说:“忽略该函数,我将其替换为同名的新函数,其中整个定义为nest f n = f . nest f (n - 1)。
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |