haskell从文件中读取

Ste*_*dor 3 string haskell line

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

main = interact (unlines . (map calculate) . lines)
Run Code Online (Sandbox Code Playgroud)

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

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

这是我试过的

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

请告诉我,这是怎么回事?

更新如下

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
Run Code Online (Sandbox Code Playgroud)

Cod*_*ice 7

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

interact (unlines . (map calculate) . linii)
Run Code Online (Sandbox Code Playgroud)

putStrLn . unlines $ map calculate linii
Run Code Online (Sandbox Code Playgroud)