Turtle
について少し学ぶには、チュートリアルの例を修正するのがいいと思った。私は、出力の各行から、簡単な運動であると考えて、冗長な "FilePath"を削除することを選択しました。Haskell Turtleライブラリを使用してパスを印刷する方法は?
しかし、図書館を使いやすくするための作者の努力にもかかわらず、私はこの単純な問題を解決するのにほとんど役に立たなかった。
私はそれは私が何とかShell
にIO
から>>=
を持ち上げることが可能になるように見えた私はそれを見たeverytingを試してみました:MonadIO
、FoldM
、liftIO
、ない成功を収めた_foldIO
。私は不満を募らせて、読んでTurtle
のソースコードを読んだだけで、うまくいくようなことを見つけることができました(「明白な欠陥はありません」)。
これはなぜ難しいですか?どのようにして、このライブラリのAPIを使って論理的に解決策を得ることができますか?
#!/usr/bin/env stack
-- stack --resolver lts-8.17 --install-ghc runghc --package turtle --package lens
{-# LANGUAGE OverloadedStrings #-}
import Turtle
import Control.Lens
import Control.Foldl as Foldl
import Filesystem.Path.CurrentOS
import Data.Text.IO as T
import Data.Text as T
main = do
homedir <- home
let paths = lstree $ homedir </> "projects"
let t = fmap (Control.Lens.view _Right . toText) paths
customView t
customView s = sh (do
x <- s
liftIO $ T.putStrLn x)