我正在学习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/

10-11 22:35