爲什麼這個功能有類型: deleteAllMp4sExcluding :: [Char] -> IO (IO())
代替deleteAllMp4sExcluding :: [Char] -> IO()
爲什麼嵌套IO monad,IO(IO())作爲函數的返回值?
而且,我怎麼能改寫這個,以便它有一個簡單的定義是什麼?當施加到IO
s已鍵入(a -> b) -> IO a -> IO b
import System.FilePath.Glob
import qualified Data.String.Utils as S
deleteAllMp4sExcluding videoFileName =
let dirGlob = globDir [compile "*"] "."
f = filter (\s -> S.endswith ".mp4" s && (/=) videoFileName s) . head . fst
lst = f <$> dirGlob
in mapM_ removeFile <$> lst
我的直覺感覺它有幫助:'removeFile'增加了1個效果。如果我們最終只想得到1個效果,那麼如果有0效果的東西,我們就必須餵食。 'lst'已經有效了。所以我們需要先移除它,通過使用bind(運行階段的計算)運行效果來獲得0效果的值 – nicolas