Haskell IO无法返回';t匹配类型‘;[字符]’;与‘;Char’;预期类型:字符串实际类型:[字符串]
嗨,我正在尝试创建一个用户界面,用户可以在主菜单中选择来测试功能Haskell IO无法返回';t匹配类型‘;[字符]’;与‘;Char’;预期类型:字符串实际类型:[字符串],haskell,Haskell,嗨,我正在尝试创建一个用户界面,用户可以在主菜单中选择来测试功能 data Place = Place String Coord [Int] deriving (Ord,Eq,Show,Read) data Coord = Cord Double Double deriving (Ord ,Eq ,Show ,Read) placeName :: [Place] -> [String] placeName []
data Place = Place String Coord [Int]
deriving (Ord,Eq,Show,Read)
data Coord = Cord Double Double
deriving (Ord ,Eq ,Show ,Read)
placeName :: [Place] -> [String]
placeName [] = [""]
placeName plcs = [s | (Place s x(n:ns))<-plcs]
main :: IO ()
main = do putStrLn "Rainfall Map Without A Map"
placeFile <- readFile "place.txt"
let placeData = read placeFile
putStrLn ("\nFile Loaded "++ show(length placeData)++ "places")
mainMenu placeData
mainMenu :: [Place] -> IO()
mainMenu plcs = do
putStrLn(" 1. return the name of all places")
putStrLn(" 2. Display the average rain figures of a place")
putStrLn(" 3. Display places with formatted String")
putStrLn(" 4. Return the place that have zero raingfall")
putStrLn(" 5. Replace a place with new place")
putStrLn(" 6. Save and Exit")
putStr("Please insert a number: ")
choose<- getLine
numberChoose choose plcs
numberChoose :: String -> [Place]->IO()
numberChoose "1" plcs = first plcs
numberChoose "2" plcs = second plcs
numberChoose "3" plcs = third plcs
numberChoose "4" plcs = fourth plcs
numberChoose "5" plcs = fifth plcs
numberChoose "6" plcs = sixth plcs
numberChoose _ plcs = do
putStrLn ("Error!:-- Wrong Input")
mainMenu plcs
first :: [Place]->IO()
first plcs = do
putStrLn $ placeName plcs
mainMenu plcs
putStrLn
具有类型,因此它只打印一个字符串,而不是字符串列表
您可以利用对每个元素执行一元函数,因此:
first :: [Place] -> IO ()
first plcs = do
mapM_ putStrLn (placeName plcs)
mainMenu plcs
first :: [Place] -> IO ()
first plcs = do
mapM_ putStrLn (placeName plcs)
mainMenu plcs
first :: [Place] -> IO ()
first plcs = do
putStrLn (unlines (placeName plcs))
mainMenu plcs