У меня есть функция Haskell, которая предоставляет каталог, из которого можно рекурсивно получать все файлы, и записывает имена файлов в файл. Это простой пример для начала. На следующем шаге я должен заменить отображение из файла в текст (операция transf
) операцией с использованием содержимого файла; это, очевидно, операция в монаде IO.
Мое понимание Pipe
очень ограничено; Я попытался с простой операцией c opex
, которую я попытался lift
в трубу. Я хочу удалить текущий transf
Это выглядит как простая проблема, но, несмотря на поиск в Интернете, я не могу найти решение. Спасибо за помощь!
pipedDoIO2 :: Path Abs File -> Path Abs Dir -> (Path Abs File -> IO Text) -> ErrIO ()
pipedDoIO2 file path transf = do
hand <- openFile2handle file WriteMode
Pipe.runEffect $
getRecursiveContents path
>-> PipePrelude.map ( transf) -- some IO type left?
-- >-> lift opex
>-> PipePrelude.toHandle hand
closeFile2 hand
return ()
opex :: (Path Abs File -> IO Text)
opex = return . showT