相当简单的问题,但是我要克服一个困难。我找不到任何在线作品的例子,不确定是因为它们过时并且IO中的某些东西在过去2-3年中发生了变化,还是我遗漏了一些明显的东西。
我知道读取带有readFile
返回的文件IO String
并且没有摆脱它的简便方法,但是据认为将文件读取为正常的简单方法String
是s<- readFile "filename"
在命令行中工作,但是我不能使其在函数中工作。
getString ::IO String
getString = readFile "Input.txt"
相当简单,但是返回IO String
而不是String,因此我无法进行s<- readFile "filename"
工作。我真正想要的只是一个简单的函数,该函数返回字符串中的文件,然后可以处理该字符串中的数据。
附言:我也希望看到一种简单的逐行读取文件功能的方法,因为所有示例对于它们应该执行的操作以及以任何命令式编程语言执行这些操作的难易程度似乎都非常复杂。
没有,轮流的功能IO String
成String
。您可以像这样使用do表示法*:
main = do
s <- readFile "somefile.txt"
doSomethingWith s
doSomethingWith :: String -> IO ()
doSomethingWith str = putStrLn str
但你将只能访问s
作为String
内部做块,或者被应用到的功能s
,像doSomethingWith
。
*您也可以使用等效的脱糖版本main = readFile "someFile.txt" >>= \s -> doSomethingWith s
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句