我是Haskell的初学者,我尝试在WinGHCi中输入以下内容:
Prelude> factorial 0=1
Prelude> factorial n=n*factorial (n-1)
Prelude> factorial 5
但是当我这样做时,WinGHCi陷入困境并且没有做任何事情。为什么不打印出5的阶乘?
答案 0 :(得分:4)
当您在GHCi中写作时
> let x = 4
> let x = 5
第二个定义覆盖第一个定义,将其从环境中删除。这也适用于功能。
> let f 0 = 1
> let f n = 1 + f (n-1)
相当于
> let f n = 1 + f (n-1)
将永远递归任何输入。
在GHCi中,您可以同时使用
> let f 0 = 1 ; f n = 1 + f (n-1)
但最好的方法是编辑.hs
文件,在那里编写定义,然后将其加载到GHCi中。