2013-04-16 72 views
1

我不斷收到此消息,我做錯了什麼?Haskell:輸入解析錯誤'='

data Pile a = Pile [a] deriving (Show,Eq,Ord) 

flpile:: (Eq a, Eq b, Eq c) => Pile (a,(b,c))-> Pile (a,b,c) 
flpile (Pile (a,(b,c)) = Pile [asocr (a,(b,c))] 

asocr :: (a,(b,c)) -> (a,b,c) 
asocr (a,(b,c)) = (a,b,c) 

回答

5
在這一行

flpile (Pile (a,(b,c)) = Pile [asocr (a,(b,c))] 

忘了一個右括號

樁(A,(B,C))

當你改正,你會得到一個錯誤。這是因爲你的數據定義說(a,(b,c))不是一個列表。我不知道,你想用你的代碼實現什麼,但是你可以把它改成Pile [(a,(b,c))],所以它會編譯(如果這對你的目的有意義)。

+0

謝謝,它的工作,我是哈斯克爾試圖實現一個堆棧,一些有用的功能noob。 – user2278354

7

你有一個不匹配的括號:

flpile (Pile (a,(b,c))) = ... 
        ^this was missing 

爲了避免這個問題,在未來,我recommmend使您主編的「突出匹配的括號」選項,如果有一個。如果沒有,請找一個更好的編輯器。

+0

God Im dumb哈哈,謝謝,我現在得到另一種錯誤信息, – user2278354

+1

@ user2278354:對。 'Pile'應該包含一個列表,但是你的模式有一個元組。該列表的功能應該是什麼?對所有項目應用相同的轉換? – hammar

+0

是的,該功能改變了元素的關聯。我已經使其工作已經 – user2278354