我是新来的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