问题标签 [monads]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
952 浏览

multithreading - 如何将 parMap 与一元函数一起使用?

我有一个单子函数getRate:

我想将此函数映射到字符串列表。通常,我会这样做:

但由于每次调用 getRate 都会进行网络调用,我想并行化地图,以便在单独的线程中获取每个速率(或至少在队列中展开)。我在想类似的东西

但是没有 parMapM 函数,并且 parMap 不适用于 monadic 函数。

我能做些什么?

0 投票
3 回答
601 浏览

haskell - 用折叠组合单子动作

让我们使用 type 的函数(Monad m) => a -> m a。例如:

我希望能够多次应用它。我尝试的第一件事是

问题是它不适用于大型n

它也不起作用:

实际上,有效的是使用($!)严格运算符

有更好或更惯用的解决方案吗?或者可能是更严格的?f如果是重量级函数,我仍然很容易发生堆栈溢出。

UPD:我发现times用有针对性的形式写作也不能解决编写重量级单子动作的问题。这适用于 fx = Just (x+1) 但在现实世界中失败:

0 投票
4 回答
1654 浏览

scala - Scala 等价于 Haskell 单子

我在 Haskell 有一些经验,目前正在学习 Scala。我想知道Scala中是否有与Monads等效的东西?

0 投票
1 回答
677 浏览

haskell - VBO/FBO/DisplayLists 如何在 Haskell 的 OpenGL 绑定中工作?

Haskell 是关于通过计算值来计算的。

DisplayLists / FBOs / VBOs本质上是非常有状态的。即“给我一个显示列表/缓冲区对象”。

这些绑定在 Haskell 中是如何工作的?

[我确实了解单子;所以一个技术解释,而不是一个蓬松的解释,是首选]。

谢谢!

0 投票
2 回答
160 浏览

haskell - StateT 和 WX gui 共存

通常的 wxHaskell 程序看起来像

gui 必须有类型IO a,run 有类型IO a -> IO (),还有一些初始化例程run

我正在尝试执行以下操作:

但在这种情况下 gui 必须有 type gui :: MApp AppGlobals。由于它的类型,不可能使用通常的 IO monad 语法,我的意思是我liftIO每次执行 IO 操作时都必须使用。

在 wxHaskell 中使用 State monad 是否有任何方便的可能性?手动将状态传递给每个事件处理程序并不是很方便。

0 投票
2 回答
1503 浏览

haskell - Haskell中的IO String和普通String有什么区别

从 IO String 到 String 有这样的区别吗

我想从 IO 中获取一些字符串值。

谁能告诉我这个问题。我一无所知

0 投票
8 回答
20735 浏览

haskell - 为什么副作用在 Haskell 中被建模为 monad?

谁能给出一些关于为什么 Haskell 中的不纯计算被建模为 monad 的指示?

我的意思是 monad 只是一个具有 4 个操作的接口,那么在其中建模副作用的原因是什么?

0 投票
3 回答
343 浏览

haskell - 如何在不使用“>>”的情况下将两个函数应用于同一字符串

我正在编写这样的函数。

我知道这是不正确的,但我的想法是我希望putStr应用到字符串上,然后print应用到同一个字符串上"fun = ..",这样输出将是:

这与我的函数定义相同。谢谢

0 投票
2 回答
561 浏览

data-structures - Haskell 中的 Monad 和自定义遍历函数

给定以下简单的 BST 定义:

我想编写一个可能有副作用的有序函数。我通过以下方式实现了这一目标:

这工作正常,但似乎重复 - inOrder中已经存在相同的逻辑,而且我使用 Haskell 的经验让我相信,如果我两次写类似的东西,我可能做错了。

有什么方法可以编写一个可以采用纯函数或单子函数的 inOrder 函数?

0 投票
2 回答
382 浏览

performance - 我的一元随机实现中非常慢的守卫(haskell)

我试图编写一个基于数字类的随机数生成器实现。我还在那里添加了 Monad 和 MonadPlus 实例。

“MonadPlus”是什么意思,为什么我要添加这个实例?因为我想在这里使用警卫:

这里是 RandomMonad.hs 文件内容:

当我运行 ghci 解释器并给出以下命令时

我可以在我的计算机上看到内存溢出 (1G)。这是意料之外的,如果我删除一名守卫,它的工作速度非常快。为什么在这种情况下它工作得太慢?

我做错了什么?