Я написал этот код, который проходит через строки дескриптора файла и выполняет с ним произвольное действие. Я не думаю, что это должно быть рекурсивным - могу ли я превратить его в фолд-действие?Поверните рекурсию в складку?
Спасибо!
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
Я думаю, вы только что написали фальцевальное действие, которое вы ищете! Фактически нет фактической складки, потому что у вас нет фактического контейнера, полного значений, а скорее дескриптор, который позволяет использовать ввод-вывод для получения значений. – dfeuer