gpt4 book ai didi

haskell - 从haskell中的stdin读取输入并转换为整数列表

转载 作者:行者123 更新时间:2023-12-03 14:24:07 32 4
gpt4 key购买 nike

以下代码有什么问题?我只是想在文件中转换以下格式的输入:
n - 测试用例数//n 个数字
n1
n2
(通过标准输入读取)进入整数列表并显示它?

socks :: Int -> Int
socks x = x + 1
strToInt = read :: String -> Int
strLToIntL :: [String] -> [Int]
strLToIntL xs = map (strToInt) xs
main = do
n <- readLn :: IO Int
mapM_ putStrLn $ map show $ strLToIntL $ fmap (take n . lines) getContents

运行时出现编译错误:
Couldn't match expected type `Char' with actual type `[Char]'
Expected type: String -> [Char]
Actual type: String -> [String]
In the second argument of `(.)', namely `lines'
In the first argument of `fmap', namely `(take n . lines)'

最佳答案

问题是

getContents :: IO String

所以
fmap (take n . lines) getContents :: IO [String]

这不能用于期望 [String] 的东西。 .要解决此问题,您需要“绑定(bind)” IO行动。使用 do你可以把它写成
main = do
n <- readLine :: IO Int
input <- fmap (take n . lines) getContents
mapM_ putStrLn . map show . strLToIntL $ input

您可以将最后一行更改为
 mapM print . strLToIntL $ input

关于haskell - 从haskell中的stdin读取输入并转换为整数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20755395/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com