2015-11-07 65 views
0

我是新來的哈斯克爾。 得到一個解析錯誤,不知道什麼是錯的。模式n解析錯誤

fromDecTo :: (Int -> Int) -> [Int] 
fromDecTo (n x) | (n < x) = [n] 
       | otherwise = fromDecTo (n `div` x) ++ [n `mod` x] 

這應該將十進制數轉換爲基數爲x(a.e.十六進制)的數字。

請幫幫我。

回答

4
fromDecTo :: (Int -> Int) -> [Int] 

這是具有一個的說法,從整數到整數功能的功能。這是不是你想要的:你想有兩個參數的函數,即

fromDecTo :: Int -> Int -> [Int] 

同樣,圖案

fromDecTo (n x) 

表示將函數nx,然後應用fromDecTo到的結果結果。這是不是你想要的,帶有兩個參數與

fromDecTo n x 

做最後要注意,即使它不是習慣這樣做,就可以添加括號,但相反的關係。上面所示的相同類型的可寫入

fromDecTo :: Int -> (Int -> Int) 

其中強調功能在Haskell咖喱的事實:一個二進制函數實際上是隻服用一個參數,第一,並返回一個函數採取一個的功能等論點,第二,最後返回結果。

類似的,而不是

fromDecTo n x 

因爲n是後應用於fromDecTo,然後再x我們可以寫

(fromDecTo n) x 

+0

謝謝!現在工作 – 04k

0

在代碼中有幾個問題。這裏是你想要達到的目標:

fromDecTo :: Int -> Int -> [Int] 
fromDecTo n x | (n < x) = [n] 
       | otherwise = fromDecTo (n `div` x) x ++ [n `mod` x]