我有以下Haskell程序:
catlines = unlines . zipWith (\(n,l) -> show n ++ l) [0..]
main = putStrLn $ catlines ["A", "B"]
当我尝试编译它时,GHC会出现以下错误:
catlines.hs:1:41:
Couldn't match expected type `b0 -> String' with actual type `[a0]'
In the expression: show n ++ l
In the first argument of `zipWith', namely
`(\ (n, l) -> show n ++ l)'
In the second argument of `(.)', namely
`zipWith (\ (n, l) -> show n ++ l) [0 .. ]'
据我所知,这应该编译。我不知道出了什么问题。
答案 0 :(得分:5)
问题是传递给zipWith
的函数应该有两个参数,而不是一个元组。试试这样:
zipWith (\n l -> show n ++ l)