我只是在学习Haskell。我认为这会产生一个因子函数......
(在ghci内)
Prelude> let ft 0 = 1
Prelude> let ft n = n * ft (n - 1)
Prelude> ft 5
(无限期挂起,直到^ C)。
有人能指出我正确的方向吗?
谢谢!
答案 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