3

我正在尝试从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
4

1 回答 1

7

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

interact (unlines . (map calculate) . linii)

putStrLn . unlines $ map calculate linii
于 2013-05-30T18:08:28.787 回答