簡體   English   中英

為什么這個 function 不終止於 Haskell?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM