haskell中的无限循环? (新手)

时间:2010-05-25 01:00:04

标签: haskell recursion ghci

我只是在学习Haskell。我认为这会产生一个因子函数......

(在ghci内)

Prelude> let ft 0 = 1
Prelude> let ft n = n * ft (n - 1)
Prelude> ft 5

(无限期挂起,直到^ C)。

有人能指出我正确的方向吗?

谢谢!

1 个答案:

答案 0 :(得分:30)

两个单独的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