0
我卡在其被賦予一個錯誤而當我測試這個功能:哈斯克爾錯誤:沒有實例(民[A0]從使用`it`
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
我用
maxWeight 5 10 (\i -> i + 1)
哦我看到,我已經假定匹配的第一個元素是一個空列表是相同的匹配整個輸入是一個空列表 – user2452478
空list沒有第一個元素,但'[[]]'* does *有一個空列表,因爲它是第一個元素。因此,對於編譯器,您的'ps'在列表列表上工作,因此返回列表列表。當你總結這些時,你會把列表看作是數字,這是(用普通英語)錯誤信息說的。 –