我不能爲我的生活弄清楚爲什麼這個if語句有問題(haskell noobie。)任何人都可以幫我解決嗎?Haskell,在輸入'解析錯誤'
fst3 (a,b,c) = a
snd3 (a,b,c) = b
trd3 (a,b,c) = c
fst4 (a,b,c,d) = a
snd4 (a,b,c,d) = b
trd4 (a,b,c,d) = c
qud4 (a,b,c,d) = d
fractionalKnapsack (x:xs) =
fractionalKnapsack (x:xs) []
fractionalKnapsack (x:xs) fracList =
((fst3 x),(snd3 x),(trd3 x),(snd3 x)/(trd3 x)):fracList
if length (x:xs) <= 1
then computeKnapsack sort(fracList)
else fractionalKnapsack xs fracList
computeKnapsack (x:xs) = (x:xs)
作爲一個側面說明,使用三元組和四元組通常意味着您應該創建一個新的數據類型,以更充分地描述您的數據。 – 2012-08-05 14:05:26
即使有三元組,也沒有必要使用這些笨拙的幫助函數:你可以直接在元組上匹配,即'fractionalKnapsack ls @((f,s,t):xs)fracList = (f, s,t,s/t):fracList' – leftaroundabout 2012-08-05 15:36:23