Haskell中的简单模式匹配

时间:2016-10-06 08:40:47

标签: haskell

我是Haskell的初学者,我尝试在WinGHCi中输入以下内容:

Prelude> factorial 0=1
Prelude> factorial n=n*factorial (n-1)
Prelude> factorial 5

但是当我这样做时,WinGHCi陷入困境并且没有做任何事情。为什么不打印出5的阶乘?

1 个答案:

答案 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中。