我写了这段代码,它循环遍历一个文件句柄的行并用它执行一个任意的动作。我不认为它应该是递归的 - 我可以把它变成一个折叠动作吗?将递归折叠?
谢谢!
processHandle :: Handle -> (String->IO()) -> IO()
processHandle h fn = do
eof <- hIsEOF h
if eof then
return()
else do
myLine <- hGetLine h
fn myLine
processHandle h fn
我想你刚刚写下了你寻求的折叠式动作!本质上没有实际的折叠,因为你没有一个实际的容器充满了值,而是一个让你使用I/O来获取值的句柄。 – dfeuer