我遇到了测试此功能时出现的错误:
maxWeight n wc f =
let ps (x:xs) = case x of
[] -> [[]]
otherwise -> ps xs ++ map (x:) (ps xs)
in maximum $ filter (<wc) $ map sum $ ps $ map f [1..n]
这是完整的错误:
No instance for (Num [[a0]]) arising from a use of `it`
In a statement of an interactive GHCi command: print it
我通过在GHCi中使用
调用该函数来测试该函数maxWeight 5 10 (\i -> i + 1)
答案 0 :(得分:1)
我发现很难理解你的功能(以及助手ps
)应该做什么(这通常有助于获得更好的答案...... :-)但看起来你在混淆两个成语您对ps
你可以写
ps y = case y of
[] -> [[]]
(x:xs) -> ps xs ++ map (x:) (ps xs)
或只是
ps [] = [[]]
ps (x:xs) = ps xs ++ map (x:) (ps xs)
但是现在看来,ps
的定义缺少一个基本情况(什么是ps []
?)
有了这个,定义就会编译,而maxWeight 5 10 (\i -> i + 1)
会产生9