monads相关内容
我试图通过在 Javascript 中实现它们的函数实例来提高我对 Applicative 和 Monad 的理解.我对 Haskell 的了解有限,我希望我的问题完全有意义. 这里是我对 Functor、 和 >>= 的实现Javascript 中的 code>、Applicative 和 Monad 类型类: const fmap = f =>g=>x =>f(g(x));//B
..
我到处都看到 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")
..
这篇博文关于如何使用 Omega monad 对角枚举任意语法的有趣解释.他提供了一个示例,说明如何执行此操作,从而产生无限的字符串序列.我想做同样的事情,除了它不是生成字符串列表,而是生成实际数据类型的列表.例如, 数据 T = A |BT |时间 会产生 A, B A, C A A, C (B A) A... 或类似的东西.不幸的是,我的 Haskell 技能仍在成熟,在玩了几个小时
..
我已经创建了一个组合框,将 xmlWidget 转换为 comboBox 和 castTocomboBox 函数,现在我想获取文本或活动项目的索引.问题是,如果我使用 comboBoxGetActive 函数,它会返回一个 IO Int 结果,我需要知道如何获取 Int 值.我试图阅读关于 monad 的内容,以便我能够理解在这种情况下人们可以做什么,但我似乎不明白.我很感激我能得到的所有帮助.我
..
在我看来,这个著名问题的答案“什么是 monad?",尤其是投票最多的那些,尝试解释什么是 monad,但没有清楚地解释为什么 monad 真的是必要的.能否将它们解释为问题的解决方案? 解决方案 为什么我们需要 monad? 我们希望仅使用函数进行编程.(毕竟是“函数式编程 (FP)"). 然后,我们遇到了第一个大问题.这是一个程序: f(x) = 2 * x g
..
在涉及函数式编程方面的 Monads 之后,该功能是否真的使语言变得纯粹,或者只是在黑板数学之外的现实世界中推理计算机系统的另一张“越狱卡"? 编辑: 这不是有人在这篇文章中所说的火焰诱饵,而是一个真正的问题,我希望有人可以击倒我并说,证明,它是纯粹的. 此外,我正在研究与其他不那么纯粹的函数式语言和一些使用良好设计并比较纯度的面向对象语言的问题.到目前为止,在我非常有限的 FP
..
据我所知,Haskell 中的 do 块只是 monadic 绑定运算符的某种语法糖.例如,可以转换 main = do f >= print >>打印“完成" 是否可以将所有 do 块转换为绑定语法?例如,多次使用 f 的这个块怎么样: main = do f
..
我对Haskell中绑定函数(>>=)的定义有一些疑问. 因为 Haskell 是纯语言,所以我们可以使用 Monad 来处理有副作用的操作.我觉得这个策略有点像把所有可能导致副作用的动作放到另一个世界,我们可以通过 do 或 >>=do 从我们的“纯"haskell 世界控制它们代码>. 所以当我查看 >>= 函数的定义时 (>>=) :: Monad m =>m a ->(a -
..
请耐心等待,因为我对函数式编程和 Haskell 非常陌生.我试图在 Haskell 中编写一个函数,它接受一个整数列表,打印所述列表的头部,然后返回列表的尾部.该函数需要是 [Integer] -> [Integer] 类型.为了提供一些上下文,我正在编写一个解释器,当在关联列表中查找其各自的命令时调用该函数(键是命令,值是函数). 这是我写的代码: dot (x:xs) = 打印 x返
..
这是解决欧拉问题 43 的一种方法(如果这没有给出正确答案,请告诉我).是否有一个 monad 或其他一些语法糖可以帮助跟踪 notElem 条件? toNum xs = foldl (\s d -> s*10+d) 0 xsnumTest xs m = (toNum xs) `mod` m == 0pandigitals = [ [d0,d1,d2,d3,d4,d5,d6,d7,d8,d9]
..
大多数 Haskell 教程都教授了对 IO 使用 do-notation. 我也是从 do-notation 开始的,但这让我的代码看起来更像是命令式语言而不是 FP 语言. 这周我看到一个教程使用 IO with stringAnalyzer 读取文件“testfile.txt" 而不是使用 do main = 做strFile
..
reader monad 太复杂了,好像没什么用.如果我没记错的话,在像 Java 或 C++ 这样的命令式语言中,对于 reader monad 没有等效的概念. 你能给我一个简单的例子,让我明白一点吗? 解决方案 不要害怕!reader monad 其实并没有那么复杂,并且具有真正易于使用的实用程序. 处理 monad 有两种方式:我们可以问 monad 做什么?它配
..
我看到Free Monad这个词弹出每个 现在 和 然后有一段时间,但每个人似乎只是使用/讨论它们而没有解释它们是什么.那么:什么是自由 monad?(我想说我熟悉 monad 和 Haskell 基础知识,但对范畴论只有非常粗略的了解.) 解决方案 Edward Kmett 的回答显然很棒.但是,这有点技术性.这是一个可能更容易理解的解释. 自由 monad 只是将函子转换为 mo
..
设计/构建大型函数式程序的好方法是什么,尤其是在 Haskell 中? 我已经阅读了很多教程(我最喜欢自己编写一个方案,紧随其后的是 Real World Haskell)——但大多数程序都相对较小,而且用途单一.此外,我不认为其中一些特别优雅(例如,WYAS 中的大量查找表). 我现在想要编写更大的程序,有更多的活动部分 - 从各种不同的来源获取数据,清理它,以各种方式处理它,在用户
..
是否有带有签名的内置函数:: (Monad m) =>m a ->一个 ? Hoogle 说没有这样的功能. 你能解释一下原因吗? 解决方案 monad 只提供两个功能: return :: Monad m =>->嘛(>>=) :: Monad m =>m a ->(a -> m b) ->米 这两个都返回 m a 类型的东西,所以没有办法以任何方式组合它们来获得 Mon
..
什么是索引单子以及这个 monad 的动机? 我读过它有助于跟踪副作用.但是类型签名和文档并没有让我去任何地方. 它如何帮助跟踪副作用(或任何其他有效示例)的示例是什么? 解决方案 一如既往,人们使用的术语并不完全一致.有各种受单子启发的概念,但严格来说,这并不是完全正确的概念.术语“索引 monad"“monadish"和“参数化的monad"(Atkey的名称))是用来表征
..
我是一个 Haskell 初学者,我才刚刚开始围绕 Monads 展开我的头脑,但我还没有真正理解它.我正在编写一个游戏,其中包括询问用户输入和响应.这是我的函数的简化版本: getPoint :: IO 点获取点 = 做putStr "输入 x: "xStr
..
我开始了我的 Grand Haskell Crusade (GHC :) ) 并且我对 monad 和 IO 函数有点困惑.谁能简单地解释一下这两个函数之间的区别是什么? f1 = do x 结果是: *Main>f1[1,2,2,3]*主要>f2[[1,2],[2,3]] 解决方案 这里的其他答案是正确的,但我想知道它们是否不是您所需要的......我会尽量保持简单,只有两点:
..
在我读过的许多文章中,monad >>= 运算符是一种表示函数组合的方式.但对我来说更接近于某种高级功能的应用 ($) :: (a -> b) ->->乙(>>=) :: Monad m =>m a ->(a -> m b) ->米 对于组合,我们有 (.) :: (b -> c) ->(a -> b) ->->C(>=>) :: Monad m =>(a -> m b) ->(b -> m
..
在不同的问题中,我在关于使用 (->) 实例的 Monads 实例的评论中找到了提示,例如用于实现无点样式. 对我来说,这有点太抽象了.好的,我在 (->) 上看到了 Arrow 实例,在我看来,(->) 可以用在实例符号中,但不能用在类型中声明(这本身就是另一个问题的内容). 有没有使用 (->) 作为 Monad 实例的例子?或者好的链接? 抱歉,如果这里可能已经讨论过这个问
..