{-#LANGUAGE OverloadedStrings#-}
module Main where
import Conduit
main = (sourceRandomN 10 :: Producer IO Int) $$ printC
这样可行但是对于以下内容我需要添加runResourceT。为什么?
{-#LANGUAGE OverloadedStrings#-}
module Main where
import Conduit
main = runResourceT (sourceDirectoryDeep False "/home/bjorn/dev" $$ printC)
答案 0 :(得分:2)
您应该查看the ResourceT overview以了解资源的目的。简短的回答是,它可以让您安全地获取基于延续的monad中的资源,通常无法安全地处理异常。
对于sourceDirectoryDeep
,问题是我们需要安全地打开和关闭目录流,这样如果在处理过程中抛出异常,所有当前打开的句柄都会关闭。