2015-01-16 24 views
1

我是Haskell的新手,我试图将int转换为反转数字列表(int)。Haskell反转数字位列表

我所拥有的是:

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

但是我得到的错误“不在范围:数据构造‘Lnat’”的线条和崩溃试图加载该文件。

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

+3

您定义的函数必须有一个以小写字母开头的名称。使用例如'lnat'。大写字母保留给数据类型中值的构造函数。 – chi

+2

函数以小写字母,类型和构造函数开头,以大写字母 – genisage

+2

开头,函数名称使用小写字母。大写初始意味着构造函数。 – karakfa

回答

1

所有值必须以小写字符开头。如果它以大写或:开头,那么该值是一个数据构造函数,用于data声明中。这是你会想你的函数改变什么:

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

请注意,我也改变了低效++运营商:增添多一点速度。