编程中的monad是可组合的计算描述。 Monads是Haskell等函数式编程语言中的重要构造。
如果这是 FP 的基本问题,请原谅我。让我们考虑可选单子。我知道我可以使用 map 将一个可选值转换为另一个基于函数的可选值(如果可选,则将调用该函数......
哎呀!我正在学习 Scala,并正在阅读《Scala 函数式编程》一书。我一直在玩,发现自己处于这样的情况:我希望能够转动
Haskell 在使用序列运算符后无法推断 monad 的返回类型
以下代码 导入 Control.Monad.Writer 类 Foo c 其中 fromInt :: Int -> c 实例 Foo [Int] 其中 fromInt n = [n] 实例 (Monoid c, Foo c) => Foo (Writer c ()) 其中...
C++23的Optional::transform和Optional::and_then有什么区别?
C++23 添加了一些关于可选值的“一元式”功能,作为可选方法: 可选::and_then()(并忽略其限定符): 模板
在学习函数式编程和探索延续的概念时,我熟悉了类型(monad 转换器)Codensity 和 ContT。 它们看起来很相似,但仍然不是...
Haskell [解析错误,可能是缩进不正确或括号不匹配)解析器
我正在尝试按照本文在 Haskell 中创建一个解析器。我使用了 Pragma {-# Language NoImplicitPrelude #-}。这是为了让我能够毫无困惑地开发 Monad 类...
我有类型 数据 EvalATree b a = 叶 a |节点 ([b] -> a) [EvalATree b a] 我已经编写了 Show 和 Foldable 实例,“编辑:”认为 a = b 实例(显示a,显示a)=>显示(EvalATree...
在研究 MaybeT 的 Haskell 实现时,我偶然发现了一个有趣的问题。某些函数执行产生的结果与我的预期不同。 我不确定这是一个错误还是
F# 3.0 beta 包含一个带有大量新关键字的查询 {} 计算表达式。 如何在计算生成器中定义自己的关键字?
Maybe Monad 会在“Just or Nothing”中崩溃吗?
在阅读它们之前,我尝试实现一个 monad,我只是对 Monad 的概念有一种“感觉”。 我在 All about Monads 上读到 Just 和 Nothing 是函数,而不是 Monad 的类型,b...
为了练习我的 Haskell,我决定编写一个小的 JSON 解析器。在主文件中,我调用解析器的不同部分,打印结果,以便我有更多调试信息,然后编写
我正在查看 Folktale 和 monet.js 等库,我喜欢能够使用 map 链接操作而无需进行 null 检查或 if 语句,例如使用也许,要么,任务。 我想知道是否...
给出定义: 特征函子[F[_]]: 扩展名 [A](fa: F[A]) def map[B](f: A => B): F[B] 特征 Monad[F[_]] 扩展 Functor[F]: def 单位[A](a: => A): F[A] 扩展名 [A](fa: F[A]...
为什么允许在带有两个 monad 值的函数上使用 `ap`,而不是在包装在 monad 中的函数上?
这是haskell代码: zip与比较 `ap1` 尾部 在哪里 zipWith :: (a -> b -> c) -> [a] -> [b] -> [c] 比较 :: a -> a -> 排序 ap :: Monad m => m (a -> b) -> ...
我的数据类型是关联计算树 数据 EvalATree b a = 叶 a |节点 ([b] -> a) [EvalATree b a] 为此类型编写了 Functor 和 Applicative 实例函子 (EvalATree b) 其中 ...
我想在我的计算表达式上定义一些自定义运算符,但无法使其工作 类型 ZipSeq() = [")>] 成员 this.Apply f s = ...
如何使用 `liftIO` 和 State 来打印 Monad 内的值?
我尝试使用 MonadIO 类中的 liftIO 函数在 State monad 内打印: 导入 Control.Monad.State 导入 Control.Monad.IO.Class 导入 Control.Applicative facHelper :: 整数 -...
我最近发布了一个关于 >> 运算符的问题,因为尽管我已经阅读了 LYAH walk the linee 部分,但我的理解仍然存在一些差距。下面是一些代码/MVE...
我正在学习Ocaml,从我为论文学习的一点Haskell中学习,我想知道是否有类似的机制(类型类)来表达2个数字是可加的(就像一个泛型.. .
我有一个类型 Either a [b] 和一个函数 f :: (b -> c) 如何在 Either a [b] 类型的值上使用 f 来获取 Either a [c] ?