Haskell 在使用管道编程时,我们何时使用runResourceT

Haskell 在使用管道编程时,我们何时使用runResourceT,haskell,Haskell,这是可行的,但对于以下内容,我需要添加runResourceT。为什么? {-#LANGUAGE OverloadedStrings#-} module Main where import Conduit main = (sourceRandomN 10 :: Producer IO Int) $$ printC 您应该查看以了解resourcet的用途。简单的回答是,它可以让您安全地获取基于延续的monad中的资源,而通常安全的异常处理是不可能的 使用sourcedirectorydep

这是可行的,但对于以下内容,我需要添加runResourceT。为什么?

{-#LANGUAGE OverloadedStrings#-}
module Main where

import Conduit

main = (sourceRandomN 10 :: Producer IO Int) $$ printC
您应该查看以了解resourcet的用途。简单的回答是,它可以让您安全地获取基于延续的monad中的资源,而通常安全的异常处理是不可能的


使用
sourcedirectorydeph
,问题是我们需要安全地打开和关闭目录流,这样,如果在处理过程中抛出异常,所有当前打开的句柄都会关闭。

PS:Google仅在搜索
sourceRandomN
时从导管包本身返回结果。这是否意味着没有人使用这个库?
sourceRandomN
是一个非常新的函数(在过去的两个月中),我并不奇怪它没有太多的讨论。但是我,。
{-#LANGUAGE OverloadedStrings#-}
module Main where

import Conduit

main = runResourceT (sourceDirectoryDeep False "/home/bjorn/dev"  $$ printC)