string - haskell 从文件中读取

标签 string haskell line

我正在尝试从 haskell 中的文件中读取并处理每一行 我现在拥有的

main = interact (unlines . (map calculate) . lines)

这让我从输入中获取每一行并将其发送给计算

现在我想从文件中获取每一行并将其发送给计算

这是我试过的

main = do 
    text <- readFile "input.txt"
    let linii = lines text
    interact (unlines . (map calculate) . linii)

请告诉我它是如何正确的?

更新如下

calculate :: String -> String
calculate s=
    case ret of
        Left e -> "error: " ++(show e)
        Right n -> "answer: " ++ (show n)
    where
        ret = parse parseInput "" s

main :: IO()
--main = interact (unlines . (map calculate) . lines)
main = do text <- readFile "input.txt"
          let linii = lines
          putStrLn . unlines $ map calculate linii

最佳答案

请记住,interact 从 stdin 获取输入并将输出发送到 stdout。由于您已经从文件中读取了输入,因此不需要前者。您只需要做后面的事情。您可以使用 putStrln 打印字符串。把这一切放在一起,改变

interact (unlines . (map calculate) . linii)

putStrLn . unlines $ map calculate linii

关于string - haskell 从文件中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16843029/

相关文章:

JSON、Jackson 和多行字符串

haskell - 为什么有时一个函数在其定义中具有参数,但在实际函数中却没有参数?

c# - 字符串格式 - 如何更改负号位置

haskell $!运算符和无限列表

scala - 1::List[Nothing] in foldLeft

C 忽略一些行,然后打印其余行

java - equals() 方法检查 X 和 Y 坐标

css - 设置行间距

c - 在 c - tic tac toe 游戏中初始化 2d 字符数组

c++ - Windows API 和字符串连接