2015-10-31 55 views
0

编译代码给出无法调试Haskell的类型不匹配的错误

(+++) :: [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”与实际类型“[整数]” 在“做”块的语句:[1,2,3] +++ [4,5,6] 在表达式中: do {putStrLn“start”; [1,2,...] +++ [4,5,....]; putStrLn“end”} 在'main'的等式中: main = do {putStrLn“start”; [1,....] +++ [4,....]; putStrLn“end”}

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

+2

您需要'打印$ [1,2,3] +++ [4,5,6]'。 –

回答

1

要解决不匹配错误,您可以简单地使用“打印”功能。这样的:

(+++) :: [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" 

现在,我不知道你要实现与“+++”的功能是什么,但至少现在你不用担心了类型错误。

希望它有帮助!