F#:有没有办法扩展 monad 关键字列表?
在 F# monad 中,如果您说 let!,编译器会将其转换为您在 monad 构建器上定义的 Bind 成员。 现在我看到有查询单子,如 所示在 MSDN 上,您可以在其中…
定义一个函数时不使用任何语言扩展,但必须使用语言扩展来声明其类型?
我定义了一个自定义错误类型,我想将其与错误单子一起使用。举个例子,这里有一个虚拟的: newtype CustomError = CustomError String instance Error…
IO monad 的 >>= 和 return 的定义是什么?
在看到 List 和 Maybe monad 是如何定义后,我自然好奇如何 >>= 和 return 操作是为 IO monad 定义的。…
使用带外数据编写 monad(也称为并行组合 monad)
我目前正在编写一个名为 GL 的 monad 封装 OpenGL,并且我希望能够查询计算以获取它可能需要的每个纹理的列表。 这是一个已解决的问题吗?我在为 GL …
如何在列表和 ListT monad 转换器之间干净地转换?
我目前正在编写一个项目,其中大量使用 ListT monad 转换器。使用普通列表时,实现非确定性非常容易。然而,一旦我必须将代码转换为 ListT,它就会变…
IdentityT 变压器的用途是什么?
在查看 Transformers 包时,我发现这个 monad 转换器名为 身份T。 虽然我了解 Identity monad 的使用方式(例如 StateT Identity 只是 StateT Identit…
理解 Haskell 中的绑定函数
我熟悉范畴论中的单子(事实上,它们是一个非常简单的概念),但 Haskell 中的 >>= 函数完全让我困惑。好的,所以将绑定应用于 M a 的值和函数 a ->; …
如何证明单子是一个函子和一个应用函子?
理论上,Monad 是函子和具体应用函子的子集,尽管 Haskell 的类型系统中没有指出这一点。 知道了,给定一个 monad 并基于 return 和 bind,如何: 导…
如何使用 WAI(原始请求正文)使用管道
我使用的是 scotty,它是 WAI 的一个类似 sinatra 的包装器。我想将原始请求正文作为字节字符串获取,以便我可以将其解析为 json。下面是接近的。这与…
当两个 monad 都没有变压器时,组合两个 monad 吗?
我正在尝试编写一个网络应用程序。在本例中,我使用 scotty 和 redis,但是这个问题出现在任何 web/db 组合中。我之前使用过 happstack,所以我也喜欢…
Haskell:从 Data.Random 中的 RVar 中获取值
如何编写具有类型签名的函数,例如: mySample :: StdGen -> Int -> [a] -> [a] 根据 sample :: Int -> [a] -> RVar [a] Data.Random.Extras?这里,s…
如何实现“两个单子的乘积”影响?
假设我们有两个 monad,m 和 m'。现在,假设我们有变量, -- in real problems, the restriction is some subclass MyMonad, so don't worry -- if it…