Haskell反转数字列表

时间:2015-01-16 18:25:31

标签: haskell ghci

我是Haskell的新手,我正试图将一个int转换成一个反向数字列表(整数)。

我拥有的是:

Lnat 0 = [0]
Lnat x = [mod x 10] ++ Lnat (div x 10)

但是我在两行上都收到错误“不在范围:数据构造函数'Lnat'”,并且它在尝试加载文件时崩溃。

您能解释一下这个问题的根源以及如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

所有值必须以小写字符开头。如果它以大写或:开头,那么该值是数据构造函数,将在data声明中使用。这就是您要将功能更改为:

lnat 0 = [0]
lnat x = mod x 10 : lnat (div x 10)

请注意,我还将效率低下的++运算符更改为:以增加速度。