Haskell 中 Monad 的结合性规则
(m >>= f) >>>= g = m >>= (\x -> fx >>= g) 与 f 和 \x->f x 有何不同? 我认为它们是同一类型 a -> m b。但方程右侧的第二个 >>= 似乎将 \x->f x 的…
Haskell(嵌套)ReaderT
如何访问 ReaderT 的内部 monad。 就我而言,我的类型是: newtype VCSSetupAction a = VCSSetupAction (ReaderT (Maybe VCSConf) IDEM a) deriving (…
折叠、函数组合、单子和惰性,天哪?
我很困惑。我可以这样写: import Control.Monad main = print $ head $ (foldr (.) id [f, g]) [3] where f = (1:) g = undefined 输出是1。这是有道…
我如何以惯用的方式组织我的纯函数和我的单子行为
我决定今天是修复一些在单子操作中不必要运行的纯函数的日子。这就是我所拥有的。 flagWorkDays :: [C.Day] -> Handler [WorkDay] flagWorkDays dayLi…
我的递归列表构造有什么问题?
我已经简化了相关功能。我在 monad 内构建列表时遇到问题。我怀疑存在优先级问题。 newtype Boundary = MkBoundary Integer testFunc :: [Boundary] -…
我应该避免使用 Monad 失败吗?
我对 Haskell 相当陌生,并且慢慢地意识到 Monad failure 的存在有问题。 Real World Haskell 警告不要使用它(“我们再次建议你几乎总是避免使用失败…
从 IO ExitCode monad 获取字符串
我试图将作为参数给出的字符串(使用 getArgs )连接到 haskell 程序,例如: "rm " ++ filename ++ " filename2.txt" 位于 main = do 块内。 问题出…
如何制作 StopExecutingWhenYouHaveAResultAndReturnThatResult monad
我特别需要一种反向 Maybe monad,当它处于“Nothing”状态时,它会继续尝试获取一个值,并保留它获取的第一个有效值。 我试图概述我在这里的意思: p…
Haskell 中最快的错误单子是什么?
Maybe/Either monad 会显着减慢速度。使用一些延续单子来处理错误是否可以加快速度?是否有“内置延续单子”或“内置错误单子”之类的东西?我所说的…
如何在 scala 中将这个未来/状态概念实现为 monad
我正在尝试为比赛(如体育比赛)结果实现一个容器,以便我可以在其他比赛的获胜者之间创建比赛。这个概念与未来 monad 很接近,因为它包含一个待定义…
如何在两个 monad 之间共享状态?
我遇到了以下 monad 问题: 假设我有一个标准 monad 状态,状态为 S = (LS, RS)。我还有另一个 monad: newtype StateP a = StateP {runP :: S -> (a,…
Monad 的脱糖注释
当我学习 Haskell 时,我意识到 do 表示法只是语法糖: a = do x <- [3..4] [1..2] return (x, 42) 翻译成 a = [3..4] >>= (\x -> [1..2] >>= (\_ -> …
是否可以创建一个计算指令数量的 Monad?
想到 monad,我想到了用 monad 来打破冯·诺依曼架构的方法。冯·诺依曼架构使用一组指令(称为程序)来更改内存中的数据,程序的每条指令的执行都会更…