我是新來的Haskell和下面的代碼是給我兩個錯誤:無法與地圖匹配型IO,不能用[字符]匹配類型地圖
import Control.Monad
import Control.Applicative
import System.IO
import qualified Data.Map as Map
import Data.Maybe
main = do
return()
getPhonebook :: Int -> (Map.Map String String)
getPhonebook n
| n == 0 = Map.empty
| otherwise = do
line <- getLine
let split = words line
return (Map.insert (split !! 0) (split !! 1) (getPhonebook (n-1)))
第一個錯誤是在行line <- getLine
。錯誤說Couldn't match type ‘IO’ with ‘Map.Map String’
。我不明白這個錯誤,可能是一個愚蠢的錯誤。
第二個錯誤是在返回線上。它說Couldn't match type ‘Map.Map String String’ with ‘[Char]’
,預期類型是[Char]
。我不明白這一點,因爲該函數應該返回一個地圖,但它要求[Char]
。
任何幫助,將不勝感激:d
謝謝,我剛剛進入Haskell,我認爲做幾件簡單的事情會幫助我學習,顯然它工作... – SchoolBoy