applicative <* 的一元等价物
阅读安东尼的回复后一个与样式相关的解析器问题,我正在尝试说服自己编写单体解析器仍然可以相当紧凑。 因此, reference :: Parser Transc reference…
Haskell 是否总是知道哪个“返回”?打电话?
我定义 monad 的实例如下: data Something = Something a instance Monad Something where return a = Something a --Wraps a in 'Something', corre…
为什么是单子?它如何解决副作用?
我正在学习 Haskell 并试图理解 Monad。我有两个问题: 据我了解,Monad 只是另一个类型类,它声明了与“容器”内的数据交互的方法,包括 Maybe、List…
C# 中的 Monad——为什么 Bind 实现需要传递函数来返回 monad?
我在 C# 中看到的大多数 monad 示例都有点像这样编写: public static Identity Bind(this Identity a, Func> func) { return func(a.Value); } 例如…
如何在 Happstack 中创建数据库 Monad Stack?
我想创建一个可以对数据库进行大量访问的 Happstack 应用程序。我认为底部有 IO 的 Monad 堆栈和顶部类似数据库写入的 monad(中间有日志写入器)将在…
Haskell 和惰性 Monads 评估
在使用 monad 时,我经常遇到评估问题。现在,我了解了延迟求值的基本概念,但我不明白如何在 Haskell 中延迟求值 monad。 考虑以下代码 module Main …
Haskell 中的可变参数绑定
以下代码尝试编写一个如下所示的可变参数函数: bind_variadic mx f = mx >>= f bind_variadic mx my f = do { x <- mx; y <- 我的; 如果将“其余绑…
将 Par monad 与 STM 和确定性 IO 结合使用
我正在为一项作业撰写报告,其中我使用 STM 包实现了并发多核分支定界算法,但我遇到了一个问题。 使用STM的实现显然是在IO monad中,因为它同时使用S…
如何在 Haskell 中处理无限的 IO 对象列表?
我正在编写一个从文件列表中读取的程序。每个文件要么包含到下一个文件的链接,要么标记它是链的末尾。 作为 Haskell 的新手,处理这个问题的惯用方法…
自动将中缀运算符提升为单元中缀运算符
Haskell 的优点之一是能够使用中缀表示法。 1 : 2 : 3 : [] :: Num a => [a] 2 + 4 * 3 + 5 :: Num a => a 但当操作员需要被抬起时,这种力量突然而悲…
复杂状态 Monad 结构
我仍然是 Haskell 的新手,我想我现在已经无法理解了。我的代码如下所示。 data World = World { intStack :: [Int], boolStack :: [Bool] } deriving…
如何使用 putStrLn 进行跟踪 (Haskell)
我试图通过添加对“putStrLn”的调用来让 Haskell 函数在应用时显示:( isPrime2 1 = False isPrime2 n = do putStrLn n null (filter (==0) (map (m…
我的(尝试的)iterateM 实现有什么问题?
我想实现一个函数 iterateM,其类型如下所示: iterateM :: Monad m => (a -> m a) -> a -> [m a] 但是,我首先编写这个函数: iterateM f x = f x >>…