2015-10-31 78 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" 

現在,我不知道你要實現與「+++」的功能是什麼,但至少現在你不用擔心了類型錯誤。

希望它有幫助!