我是Haskell的新手,我正试图将一个int转换成一个反向数字列表(整数)。
我拥有的是:
Lnat 0 = [0]
Lnat x = [mod x 10] ++ Lnat (div x 10)
但是我在两行上都收到错误“不在范围:数据构造函数'Lnat'”,并且它在尝试加载文件时崩溃。
您能解释一下这个问题的根源以及如何解决这个问题吗?
答案 0 :(得分:1)
所有值必须以小写字符开头。如果它以大写或:
开头,那么该值是数据构造函数,将在data
声明中使用。这就是您要将功能更改为:
lnat 0 = [0]
lnat x = mod x 10 : lnat (div x 10)
请注意,我还将效率低下的++
运算符更改为:
以增加速度。