我正在学习Haskell。我以为这会产生阶乘函数...
(在ghci内)
Prelude> let ft 0 = 1
Prelude> let ft n = n * ft (n - 1)
Prelude> ft 5
(无限期挂起,直到^ C)。
有人可以指出我正确的方向吗?
谢谢!
最佳答案
两个单独的let
语句相互独立地解释。首先定义一个函数ft 0 = 1
,然后定义一个新函数ft n = n * ft (n - 1)
,覆盖第一个定义。
要用两种情况定义一个函数,必须将两种情况都放在一个let
语句中。要在GHCI提示符下一行执行此操作,可以通过;
分隔这两种情况:
Prelude> let ft 0 = 1; ft n = n * ft (n - 1)
Prelude> ft 5
120
关于haskell - Haskell中的无限循环? (新手),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2901360/