我想将整个文件读入一个字符串,然后使用该函数lines
来获取字符串的行.我正在尝试使用以下代码行:
main = do
args <- getArgs
content <- readFile (args !! 0)
linesOfFiles <- lines content
Run Code Online (Sandbox Code Playgroud)
但我通过编译广告失败得到以下错误:
Couldn't match expected type `IO t0' with actual type `[String]'
In the return type of a call of `lines'
In a stmt of a 'do' block: linesOfFiles <- lines content
Run Code Online (Sandbox Code Playgroud)
我认为通过将结果绑定readFile
到内容它将是一个String
DataType,为什么不是呢?
Dan*_*her 35
我认为通过将readFile的结果绑定到内容它将是一个String DataType,为什么不呢?
这是一个String
确实,这不是什么编译器抱怨.我们来看看代码:
main = do
args <- getArgs
content <- readFile (args !! 0)
Run Code Online (Sandbox Code Playgroud)
现在content
,根据需要,平原String
.然后lines content
是一个[String]
.但是你在下一行使用monadic绑定
linesOfFiles <- lines content
Run Code Online (Sandbox Code Playgroud)
在一个IO ()
块中.所以编译器期望IO something
在右侧有一个类型的表达式<-
,但它找到了一个[String]
.
由于计算lines content
不涉及任何IO
,您应该将其结果与let
绑定而不是monadic绑定绑定,
let linesOfFiles = lines content
Run Code Online (Sandbox Code Playgroud)
是你需要的那条线.
归档时间: |
|
查看次数: |
20357 次 |
最近记录: |