2015-01-16 63 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) 

請注意,我也改變了低效++運營商:增添多一點速度。