在 snap 中使用 reader monad(或者在 snap 中使用 monad 转换器)
有人可以展示如何在 reader monad 中使用 snap monad 吗? Monad 转换器让我很困惑。 (或者,我很乐意接受关于 monad 转换器的教程建议,以及如何看…
Haskell 最佳实践:在 Haskeline 中提前终止
我正在使用 Haskeline 包,我想从命令行连续获取三个字符串在我做任何事情之前,我已经想出了对我来说似乎是一个巧妙的解决方案。但我确信可能有更好…
将函数包装到 monad 转换器中是否/应该被视为不好的做法?
假设我们想要在 Maybe monad 上使用 ReaderT [(a,b)],然后我们想要在列表中进行查找。 现在,一个简单且不太罕见的方法是: 第一种可能性 find a = R…
monad 转换器上下文中的 Monad
我很难掌握 monad 和 monad 转换器。我有 以下人为示例(不可编译): import Control.Monad import Control.Monad.Error import Control.Monad.Reade…
结合 StateT 和 State monad
假设我有一个函数 f :: State [Int] Int 和一个函数: g :: StateT [Int] IO Int 我想在 g 中使用 f 并在它们之间传递状态。有没有库函数 StateT(返…
为什么我的代码使用 List 包中的一元列表如此慢?
上周,用户 Masse 提出了一个关于在 Haskell 目录中递归列出文件的问题。我的第一个想法是尝试使用 List 包 中的单子列表以避免在打印开始之前在内存…
在 monad 转换器中使用类型同义词
是否可以使用类型同义词作为 monad 转换器类型构造函数的参数?特别是,如果应用的 monad 转换器有一个一元类型同义词,它是否可以用作另一个 monad …
使用 monad 获得更优雅代码的技巧?
我终于掌握了如何使用 monad(不知道我是否理解它们......),但我的代码从来都不是很优雅。我猜想是因为缺乏对 Control.Monad 上的所有这些功能如何…
有人在野外遇到过 Monad Transformer 吗?
在我的业务领域 - 金融机构的后台 IT - 软件组件携带全局配置、记录其进度、进行某种错误处理/计算短路是很常见的......可以通过 Haskell 中的 Reader…
如何将 Maybe-Transformer MaybeT 制作为 MonadWriter 的实例?
我正在尝试构建一个 MaybeT-Transformer Monad,基于 Real World Haskell,Monad Transformers 章中的示例: data MaybeT m a = MaybeT { runMT :: m …
尝试实现 (>>=) 函数以创建自定义 monad 转换器时出现类型错误
我正在尝试为未来的项目创建一个 monad 转换器,但不幸的是,我对 Monad 类型类的 (>>=) 函数的实现不起作用。 首先,这是底层 monad 的实现: newtyp…
将 MonadError 与 Parsec 结合使用
我正在尝试将 MonadError 与 Parsec 一起使用。我想出了以下代码片段: f5 = do char 'a' throwError "SomeError" f6 = f5 `catchError` (\e -> unexp…
monad 变压器和多个 monad 的堆叠
我有带有签名 f :: [a] -> 的函数 f StateT Int Reader b [c] 和带有签名 f' :: a -> 的 f' StateT Int Reader b [c] f 中的计算(非常简化)如下所示…
Haskell Monad 变压器堆栈和类型签名
我正在尝试创建一堆 monad 转换器,但无法为我的函数获取正确的类型签名。 (我对 Haskell 还很陌生) 该堆栈结合了多个 StateT 转换器,因为我需要跟…