这是我正在编写的特定于域的文件 IO 函数的摘录:
let
cp :: FilePath -> IO ()
cp "." = putStr "" -- OUCH!
cp ".." = putStr "" -- CRIKEY!
cp fname = custom logic here...
in mapM_ cp filepaths
我知道mapM_
让我们放弃/忽略所有IO ()
结果,所以我想要一个更清洁的替代方案putStr ""
——即。Haskell 的“规范”方式来编写“一个什么都不做的类型正确的无操作 IO(或 monad)表达式”。
从我的新手阅读中,我undefined
想到了,虽然它可以编译并且不会导致任何问题,但它会提供不需要的标准输出打印main.hs: Prelude.undefined
(我在这里stack runghc main.hs
用作唯一的编码环境 --- 这已经足够了,但是上面的代码将递归循环通过目录树:因此是(重新)了解更好或更确切地说是“正确”方法的好时机)。