0

Haskell 中分 5 步,阶乘函数定义如下:

let fac n = if n == 0 then 1 else n * fac (n-1)

但是对于拥抱,它说 fac 需要在 fac.h 中。谁能解释为什么会这样 - 缺少定义命名函数的能力似乎对解释器来说是一个巨大的限制?

4

2 回答 2

2

Hugs 错过了定义任何命名函数(递归或非递归)的能力。它还缺少定义数据类型的能力。

于 2010-03-30T10:32:41.557 回答
2

据我所知,基本答案是 Hugs 交互式顶层本质上是一个表达式解析器,函数/数据定义不是表达式。如果您将其设为表达式并编写,您的示例实际上会起作用let fac n = if n == 0 then 1 else n * fac (n-1) in fac 19。添加对此的支持将是一项相当大的工作,显然 Hugs 的实现者认为要求函数/数据定义在文件中就足够了。

于 2010-03-30T15:37:05.793 回答