monads相关内容

如何处理 Applicative 的副作用?

我到处都看到 Applicative 可以处理副作用,但我看到的所有简单示例都只是将以下内容组合在一起: >(,,) [1,2] ["a", "b", "c"] ["foo", "bar"][(1,"a","foo"),(1,"a","bar"),(1,"b","foo"),(1,"b","bar"),(1,"c","foo"),(1,"c","bar"),(2,"a","foo") ..
发布时间:2021-12-14 11:57:41 其他开发

如何在 Haskell 中枚举递归数据类型?

这篇博文关于如何使用 Omega monad 对角枚举任意语法的有趣解释.他提供了一个示例,说明如何执行此操作,从而产生无限的字符串序列.我想做同样的事情,除了它不是生成字符串列表,而是生成实际数据类型的列表.例如, 数据 T = A |BT |时间 会产生 A, B A, C A A, C (B A) A... 或类似的东西.不幸的是,我的 Haskell 技能仍在成熟,在玩了几个小时 ..
发布时间:2021-12-14 11:57:24 其他开发

将 IO Int 转换为 Int

我已经创建了一个组合框,将 xmlWidget 转换为 comboBox 和 castTocomboBox 函数,现在我想获取文本或活动项目的索引.问题是,如果我使用 comboBoxGetActive 函数,它会返回一个 IO Int 结果,我需要知道如何获取 Int 值.我试图阅读关于 monad 的内容,以便我能够理解在这种情况下人们可以做什么,但我似乎不明白.我很感激我能得到的所有帮助.我 ..
发布时间:2021-12-14 11:57:18 其他开发

为什么我们需要单子?

在我看来,这个著名问题的答案“什么是 monad?",尤其是投票最多的那些,尝试解释什么是 monad,但没有清楚地解释为什么 monad 真的是必要的.能否将它们解释为问题的解决方案? 解决方案 为什么我们需要 monad? 我们希望仅使用函数进行编程.(毕竟是“函数式编程 (FP)"). 然后,我们遇到了第一个大问题.这是一个程序: f(x) = 2 * x g ..
发布时间:2021-12-14 11:53:51 其他开发

Haskell 是否真正纯粹(是否有任何语言处理系统外的输入和输出)?

在涉及函数式编程方面的 Monads 之后,该功能是否真的使语言变得纯粹,或者只是在黑板数学之外的现实世界中推理计算机系统的另一张“越狱卡"? 编辑: 这不是有人在这篇文章中所说的火焰诱饵,而是一个真正的问题,我希望有人可以击倒我并说,证明,它是纯粹的. 此外,我正在研究与其他不那么纯粹的函数式语言和一些使用良好设计并比较纯度的面向对象语言的问题.到目前为止,在我非常有限的 FP ..

为什么haskell 的bind 函数会从non-monadic 到monadic 取函数

我对Haskell中绑定函数(>>=)的定义有一些疑问. 因为 Haskell 是纯语言,所以我们可以使用 Monad 来处理有副作用的操作.我觉得这个策略有点像把所有可能导致副作用的动作放到另一个世界,我们可以通过 do 或 >>=do 从我们的“纯"haskell 世界控制它们代码>. 所以当我查看 >>= 函数的定义时 (>>=) :: Monad m =>m a ->(a - ..
发布时间:2021-12-14 11:48:57 其他开发

Haskell:I/O 和从函数返回

请耐心等待,因为我对函数式编程和 Haskell 非常陌生.我试图在 Haskell 中编写一个函数,它接受一个整数列表,打印所述列表的头部,然后返回列表的尾部.该函数需要是 [Integer] -> [Integer] 类型.为了提供一些上下文,我正在编写一个解释器,当在关联列表中查找其各自的命令时调用该函数(键是命令,值是函数). 这是我写的代码: dot (x:xs) = 打印 x返 ..
发布时间:2021-12-14 11:48:49 其他开发

读者单子的目的是什么?

reader monad 太复杂了,好像没什么用.如果我没记错的话,在像 Java 或 C++ 这样的命令式语言中,对于 reader monad 没有等效的概念. 你能给我一个简单的例子,让我明白一点吗? 解决方案 不要害怕!reader monad 其实并没有那么复杂,并且具有真正易于使用的实用程序. 处理 monad 有两种方式:我们可以问 monad 做什么?它配 ..
发布时间:2021-12-14 11:46:10 其他开发

什么是自由单子?

我看到Free Monad这个词弹出每个 现在 和 然后有一段时间,但每个人似乎只是使用/讨论它们而没有解释它们是什么.那么:什么是自由 monad?(我想说我熟悉 monad 和 Haskell 基础知识,但对范畴论只有非常粗略的了解.) 解决方案 Edward Kmett 的回答显然很棒.但是,这有点技术性.这是一个可能更容易理解的解释. 自由 monad 只是将函子转换为 mo ..
发布时间:2021-12-14 11:41:19 其他开发

Haskell 中的大规模设计?

设计/构建大型函数式程序的好方法是什么,尤其是在 Haskell 中? 我已经阅读了很多教程(我最喜欢自己编写一个方案,紧随其后的是 Real World Haskell)——但大多数程序都相对较小,而且用途单一.此外,我不认为其中一些特别优雅(例如,WYAS 中的大量查找表). 我现在想要编写更大的程序,有更多的活动部分 - 从各种不同的来源获取数据,清理它,以各种方式处理它,在用户 ..
发布时间:2021-12-14 11:41:11 其他开发

如何从 monadic action 中提取价值

是否有带有签名的内置函数:: (Monad m) =>m a ->一个 ? Hoogle 说没有这样的功能. 你能解释一下原因吗? 解决方案 monad 只提供两个功能: return :: Monad m =>->嘛(>>=) :: Monad m =>m a ->(a -> m b) ->米 这两个都返回 m a 类型的东西,所以没有办法以任何方式组合它们来获得 Mon ..
发布时间:2021-12-14 11:39:58 其他开发

什么是索引单子?

什么是索引单子以及这个 monad 的动机? 我读过它有助于跟踪副作用.但是类型签名和文档并没有让我去任何地方. 它如何帮助跟踪副作用(或任何其他有效示例)的示例是什么? 解决方案 一如既往,人们使用的术语并不完全一致.有各种受单子启发的概念,但严格来说,这并不是完全正确的概念.术语“索引 monad"“monadish"和“参数化的monad"(Atkey的名称))是用来表征 ..
发布时间:2021-12-14 11:39:15 其他开发

使用 getLine 和 putStr 时 IO 发生乱序

我是一个 Haskell 初学者,我才刚刚开始围绕 Monads 展开我的头脑,但我还没有真正理解它.我正在编写一个游戏,其中包括询问用户输入和响应.这是我的函数的简化版本: getPoint :: IO 点获取点 = 做putStr "输入 x: "xStr ..
发布时间:2021-12-14 11:38:23 其他开发

在列表 monad 中使用 return 与不使用 return

我开始了我的 Grand Haskell Crusade (GHC :) ) 并且我对 monad 和 IO 函数有点困惑.谁能简单地解释一下这两个函数之间的区别是什么? f1 = do x 结果是: *Main>f1[1,2,2,3]*主要>f2[[1,2],[2,3]] 解决方案 这里的其他答案是正确的,但我想知道它们是否不是您所需要的......我会尽量保持简单,只有两点: ..
发布时间:2021-12-14 11:37:12 其他开发

如何使用 (->) Monad 实例和关于 (->) 的混淆

在不同的问题中,我在关于使用 (->) 实例的 Monads 实例的评论中找到了提示,例如用于实现无点样式. 对我来说,这有点太抽象了.好的,我在 (->) 上看到了 Arrow 实例,在我看来,(->) 可以用在实例符号中,但不能用在类型中声明(这本身就是另一个问题的内容). 有没有使用 (->) 作为 Monad 实例的例子?或者好的链接? 抱歉,如果这里可能已经讨论过这个问 ..
发布时间:2021-12-14 11:36:52 其他开发