将文件读入字符串haskell

时间:2015-03-04 18:21:52

标签: ios haskell

相当简单的问题,但是我很难克服。我在网上找到的所有例子都没有,不确定它是否因为它们已经过时而IO中的某些内容在过去的2 - 3年内发生了变化,或者我遗漏了一些明显的东西。

我知道用readFile读取文件会返回IO String,并且没有简单的方法可以摆脱它,但据说将文件读入普通String的简单方法是{{1它在命令行中工作,但我不能让它在函数中工作。

s<- readFile "filename"

相当简单,但返回getString ::IO String getString = readFile "Input.txt" 而不是String,我无法使IO String工作。 我真正想要的只是简单的函数,它返回String中的文件然后我可以处理该字符串中的数据。

Ps我很想看到逐行读取文件的简单方法,因为所有示例似乎都非常复杂,因为它们应该做什么以及在任何命令式编程语言中执行这些操作是多么容易。

1 个答案:

答案 0 :(得分:6)

没有将IO String转换为String的功能。您可以使用这样的符号*:

main = do
  s <- readFile "somefile.txt"
  doSomethingWith s

doSomethingWith :: String -> IO ()
doSomethingWith str = putStrLn str

但您只能在do块内或s中应用String作为s访问doSomethingWith,如main = readFile "someFile.txt" >>= \s -> doSomethingWith s


*您也可以使用等效的 desugared 版本{{1}}。