我很困惑为什么我的函数nest
与f
次组成n
的原因
nest f 0 = id
nest f n = f . nest f (n - 1)
永不终止。我本以为在n
变为零的情况下,它将“模式匹配”。我通过在GHCI中键入这两行并以nest (+ 1) 2 3
为例进行定义。
答案 0 :(得分:12)
通过在两条单独的REPL行上键入该函数,实际上是在第二次重新定义它,而忽略了基本情况。
将此功能输入REPL的正确方法是:
nest f 0 = id; nest f n = f . nest f (n - 1)
或者,您可以使用:{
命令进入多行模式,并使用:}
退出多行模式。
答案 1 :(得分:6)
将其粘贴到GHCi中后,您所做的就是定义nest f 0 = id
的一个功能。然后您说:“忽略该函数,我将其替换为同名的新函数,其中整个定义为nest f n = f . nest f (n - 1)
。