[英]Why doesn't this function terminate in Haskell?
我很困惑為什么我的f
nest
與自己組成n
次
nest f 0 = id
nest f n = f . nest f (n - 1)
永不終止。 我會認為當n
變為零時它會“模式匹配”。 例如,我通過在 GHCI 中鍵入這兩行並使用nest (+ 1) 2 3
調用來定義它。
通過在兩條單獨的 REPL 行上鍵入 function,您實際上是在第二次重新定義它,省略了基本情況。
將這個 function 輸入 REPL 的正確方法是:
nest f 0 = id; nest f n = f . nest f (n - 1)
或者,您可以使用:{
命令進入多行模式,並使用:}
離開它。
當您將其粘貼到 GHCi 中時,您所做的是定義一個nest f 0 = id
的 function 。 然后你說“忽略那個 function,我用同名的新 function 替換它,其中整個定義是nest fn = f. nest f (n - 1)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.