我不能为我的生活弄清楚为什么这个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