编程中的monad是可组合的计算描述。 Monads是Haskell等函数式编程语言中的重要构造。
如何在python中参数化通过@classmethod实例化的类的类型
我正在尝试定义一个通用基类,它可以像这样实例化自身的包装实例 从输入导入 Callable、TypeVar、Generic T = 类型变量(“T”) U = TypeVar("U"...
编译器或库的更“本机”部分(IO 或可以访问黑魔法和实现的函数)是否对这些定律做出假设?打破它们会导致
我正在 OCaml 中学习 Monad,但它无法编译。 我减少了代码以最简单的方式重现问题: 文件 try.ml: 模块类型 TRY = sig 输入 'a t 值返回:'a -> 'a t 结尾 莫...
类型化函数式编程中的模式 Option[Future[Int]] 转换为 Future[Option[Int]]
我发现自己在使用 Scala 时遇到的一个常见情况是以下流程: 阅读一些返回选项的 props 在未来使用道具 对未来的结果做一些改造,...
我试图编写将所有数据节点乘以给定数字的 monad。 我不知道如何正确定义 Monad。 模块主要在哪里 数据 LinkedList a = NodeWithoutNext a |节点a(链表...
我要读n遍然后把它全部放在一个列表里。我有以下代码,但它不起作用。任何 Haskell/函数专家可以给我一个启发吗? 复制IO n a = do y <- a ...
我一直在努力更好地理解 Haskell 中的 Monad,所以我开始阅读 Philip Wadler 的论文《Monads for functionprogramming》。为了更好地内化原理......
我想知道 Haskell 状态单子 >> 的定义。 据我猜测,它将一种状态传递到另一种状态: (>>) :: 状态 s a -> 状态 s b -> 状态 s b 注明 >> 斯塔...
是否有 Haskell 模式可以避免编写此自定义函数?这个想法是将 Maybe 中的 Nothing 作为错误处理(作为包装 Either 的一部分): 要么MaybeHandle :: Str...
这篇博文对如何使用 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' 组合器。在他的示例中,他计算了数组的最小/最大元素并取...