如何在列表和 ListT monad 转换器之间干净地转换?
我目前正在编写一个项目,其中大量使用 ListT monad 转换器。使用普通列表时,实现非确定性非常容易。然而,一旦我必须将代码转换为 ListT,它就会变…
如何使用 monad-control 通过 ReaderT 进行简单的新型包装
我定义了一个简单的 monad 转换器,EntityBuilderT,它只是 ReaderT 上的一个新类型。 data EntityBuilderState = ... newtype EntityBuilderT m a = …
IdentityT 变压器的用途是什么?
在查看 Transformers 包时,我发现这个 monad 转换器名为 身份T。 虽然我了解 Identity monad 的使用方式(例如 StateT Identity 只是 StateT Identit…
当两个 monad 都没有变压器时,组合两个 monad 吗?
我正在尝试编写一个网络应用程序。在本例中,我使用 scotty 和 redis,但是这个问题出现在任何 web/db 组合中。我之前使用过 happstack,所以我也喜欢…
如何将 Maybe 值注入 MaybeT
假设我有一些 foo :: Maybe Int 并且我想将它绑定到例如 bar :: Int ->; MaybeT (Writer String) Int,这样做的惯用方法是什么? 我可以定义自己的 li…
存在类型和单子转换器
上下文:我试图生成一个错误单子,它还跟踪警告列表,如下所示: data Dangerous a = forall e w. (Error e, Show e, Show w) => Dangerous (ErrorT e…
Haskell monad 和不需要字符串的失败
我有以下 monad 转换器来处理 Haskell 中的错误。 instance (Monad m, Error e) => Monad (EitherT e m) where return = EitherT . return . return m…
用于进度跟踪的 Monad 变压器
我正在寻找一个可用于跟踪程序进度的 monad 转换器。为了解释如何使用它,请考虑以下代码: procedure :: ProgressT IO () procedure = task "Print s…
我怎样才能用延续来实现这个 monad 转换器?
动机。我正在尝试创建一个 monad 转换器,并使用特殊指令 f g 表示“重复包含 f g 的整个块,一次使用 f,下一次使用 g代码>”。这旨在用于 DSL 转换…
Monad Transformer 基准测试的奇怪结果。一个错误?
我做了一些 Criterion 基准测试来估计在 monad 堆栈上运行代码会损失多少性能。结果相当奇怪,我可能在我的基准测试中偶然发现了一些惰性陷阱。 基准…
Monad 变换用于理解
考虑一下: def xs(c: String): Option[List[Long]] = ... val ys: Stream[Long] = ... 现在我会编写一个类似以下的方法: def method(oc: Option[Str…
如何在 Happstack 中创建数据库 Monad Stack?
我想创建一个可以对数据库进行大量访问的 Happstack 应用程序。我认为底部有 IO 的 Monad 堆栈和顶部类似数据库写入的 monad(中间有日志写入器)将在…
scalaz List[StateT].sequence - 找不到参数 n 的隐式值:scalaz.Applicative
我试图根据我的 StateT 组合两个 State 状态转换器questions/7734756/scalaz-state-monad-examples/7734876#7734876">Scalaz 状态 monad 示例 答案。 …