编程中的monad是可组合的计算描述。 Monads是Haskell等函数式编程语言中的重要构造。
这篇博文对如何使用 Omega monad 对角枚举任意语法进行了有趣的解释。他提供了一个示例来说明如何做到这一点,从而产生无限序列
我读了很多关于map、reduce和filter的文章,因为它们在react和FP中的使用量很大。如果我们写这样的东西: 让 myArr = [1,2,3,4,5,6,7,8,9] 让
如何使用 Monad 的 (->) 实例以及关于 (->) 的困惑
在不同的问题上,我在评论中找到了有关使用 Monad 的 (->) 实例的提示,例如实现无点风格。 对于我来说,这有点太抽象了。好的,我看到了箭头
难以理解带有嵌套 `fmap` 的 Haskell 类型统一
我在查看免费 monad 时遇到了这个问题,但已将其简化为一个更小的示例。 在 Haskell 中,我们有以下类型: fmap :: 函子 f => (a -> b) -> f a -&g...
我在查看免费 monad 时遇到了这个问题,但已将其简化为一个更小的示例。 在 Haskell 中,我们有以下类型: fmap :: 函子 f => (a -> b) -> f a -&g...
假设我们要解析这样的表达式: 指数 := 多 Mul := 添加 {'*' 添加} 添加 := 文字 {'+' 文字} 文字 := 数字 | '('Exp')' 在 Haskell 中,我们可以编写一个解析器,例如 exp = mu...
是否可以编写像 Haskell 中一样干净的 Monadic 解析器?
假设我们要解析这样的表达式: 指数 := 多 Mul := 添加 {'*' 添加} 添加 := 文字 {'+' 文字} 文字 := 数字 | '('Exp')' 在 Haskell 中,我们可以编写一个解析器,例如 exp = mu...
我正在尝试在 haskell 中为链表枚举数据类型编写 Monad,但我不明白为什么我的绑定函数 (>>=) 在 ghci 中出错。 数据 LL a = 哨兵 |节点 a (LL a)
如何理解 Monad 中的 <- in Haskell's do notation with an uncommon ">>=" 实现?
我是一名 C++/Rust 程序员,出于好奇,我目前正在学习 Haskell。正如所料,我在尝试理解 Monad 时遇到了一些障碍: 我已经读过定义...
假设我有一个如下列表: [没什么,只是1,没什么,只是2] 我想获得第一个Just(非错误)值;在这种情况下,它只是 1。我唯一能想到的是: FirstJust xs = 案例过滤器
liftM2 如何像 Haskell 中的 S' 组合器一样工作?
我正在观看 code_report(链接)的视频,其中他提到 liftM2 的工作原理就像组合逻辑中的 S' 组合器。在他的示例中,他计算了数组的最小/最大元素并取...
我正在尝试使用 Haskell 抓取网页并将结果编译到一个对象中。 如果出于某种原因,我无法从页面中获取所有项目,我想停止尝试处理页面...
假设我有两个Options,如果都是Some,则执行一个代码路径,如果有注释,则执行另一个。 我想做类似的事情 对于 (x <- xMaybe; y <- yMaybe) { // do something } els...
是否已经有类似以下内容的东西。 /** * 前任。 * const ret = 等待 asyncify(Math.max)(arg1, arg2); */ 异步(函数){ 返回异步(...输入)=> { // ...
我尝试学习 Haskell,并努力将 do 语法转换为 monad。 所以,我把它归结为一个小例子。 我懂了: 工作::字符串 工作=做 让 arr = ["获取", "这个&qu...
如何在 Haskell 中编写 Monad 来高效地跟踪和预取 i18n 键?
我正在尝试编写一个 Monad 来跟踪一段代码正在使用哪些 i18n 键。这个想法是预先以有效的方式预取所有这些键的值,而不是最终...
我是 Haskell 新手,正在学习如何使用 Haskell 编写编译器。我使用如下所示的 monad 语法在“Monadic Parser Combinators”中重写了这些代码。一切似乎都运转良好...
首先声明我对 Monad 的理解还很幼稚。我在这里阅读了有关 Monad 的各种帖子,并对这个概念进行了几个小时的研究。我几乎感觉不舒服...
我正在尝试掌握“Scala 方式”工作的窍门,所以我想知道下面的代码是否是在这种情况下应该如何完成的事情。 所以我有实体 User 和 Company (用 LiftWeb 映射
我编写了以下函数(使用这些库): import Control.Applicative(替代 ((<|>)),可选) 导入数据。这些(这些(..)) asumThese :: (替代 f, Monad f) ...