无法调试haskell类型不匹配错误

时间:2015-10-31 21:53:03

标签: haskell type-mismatch

编译代码

(+++) :: [a] -> [a] -> [a]
lst1 +++ lst2 = if null lst1
                then []
                else (head lst1) : (tail lst1 +++ lst2)


main :: IO ()
main = do
  putStrLn "start"                                                                                                          
  [1,2,3] +++ [4,5,6]
  putStrLn "end"

无法将预期类型'IO a0'与实际类型'[Integer]'匹配     在'do'块中:[1,2,3] +++ [4,5,6]     在表达式中:       do {putStrLn“start”;            [1,2,....] +++ [4,5,....];            putStrLn“结束”}     在'main'的等式中:         主要           = do {putStrLn“start”;                  [1,....] +++ [4,....];                  putStrLn“结束”}

我没有做任何事情 - 它看起来很好。

1 个答案:

答案 0 :(得分:1)

要解决不匹配错误,您只需使用' print'功能。像那样:

(+++) :: [a] -> [a] -> [a]
lst1 +++ lst2 = if null lst1
            then []
            else (head lst1) : (tail lst1 +++ lst2)

main :: IO ()
main = do
   putStrLn "start"                                                                                                          
   print ([1,2,3] +++ [4,5,6])
   putStrLn "end"

现在,我不知道你想要用' +++'功能,但至少现在你不担心类型错误。

希望它有所帮助!