问题标签 [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.
multithreading - 如何将 parMap 与一元函数一起使用?
我有一个单子函数getRate:
我想将此函数映射到字符串列表。通常,我会这样做:
但由于每次调用 getRate 都会进行网络调用,我想并行化地图,以便在单独的线程中获取每个速率(或至少在队列中展开)。我在想类似的东西
但是没有 parMapM 函数,并且 parMap 不适用于 monadic 函数。
我能做些什么?
haskell - 用折叠组合单子动作
让我们使用 type 的函数(Monad m) => a -> m a
。例如:
我希望能够多次应用它。我尝试的第一件事是
问题是它不适用于大型n
:
它也不起作用:
实际上,有效的是使用($!)
严格运算符
有更好或更惯用的解决方案吗?或者可能是更严格的?f
如果是重量级函数,我仍然很容易发生堆栈溢出。
UPD:我发现times
用有针对性的形式写作也不能解决编写重量级单子动作的问题。这适用于 fx = Just (x+1) 但在现实世界中失败:
scala - Scala 等价于 Haskell 单子
我在 Haskell 有一些经验,目前正在学习 Scala。我想知道Scala中是否有与Monads等效的东西?
haskell - VBO/FBO/DisplayLists 如何在 Haskell 的 OpenGL 绑定中工作?
Haskell 是关于通过计算值来计算的。
DisplayLists / FBOs / VBOs本质上是非常有状态的。即“给我一个显示列表/缓冲区对象”。
这些绑定在 Haskell 中是如何工作的?
[我确实了解单子;所以一个技术解释,而不是一个蓬松的解释,是首选]。
谢谢!
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 是否有任何方便的可能性?手动将状态传递给每个事件处理程序并不是很方便。
haskell - Haskell中的IO String和普通String有什么区别
从 IO String 到 String 有这样的区别吗
我想从 IO 中获取一些字符串值。
谁能告诉我这个问题。我一无所知
haskell - 为什么副作用在 Haskell 中被建模为 monad?
谁能给出一些关于为什么 Haskell 中的不纯计算被建模为 monad 的指示?
我的意思是 monad 只是一个具有 4 个操作的接口,那么在其中建模副作用的原因是什么?
haskell - 如何在不使用“>>”的情况下将两个函数应用于同一字符串
我正在编写这样的函数。
我知道这是不正确的,但我的想法是我希望putStr
应用到字符串上,然后print
应用到同一个字符串上"fun = .."
,这样输出将是:
这与我的函数定义相同。谢谢
data-structures - Haskell 中的 Monad 和自定义遍历函数
给定以下简单的 BST 定义:
我想编写一个可能有副作用的有序函数。我通过以下方式实现了这一目标:
这工作正常,但似乎重复 - inOrder中已经存在相同的逻辑,而且我使用 Haskell 的经验让我相信,如果我两次写类似的东西,我可能做错了。
有什么方法可以编写一个可以采用纯函数或单子函数的 inOrder 函数?
performance - 我的一元随机实现中非常慢的守卫(haskell)
我试图编写一个基于数字类的随机数生成器实现。我还在那里添加了 Monad 和 MonadPlus 实例。
“MonadPlus”是什么意思,为什么我要添加这个实例?因为我想在这里使用警卫:
这里是 RandomMonad.hs 文件内容:
当我运行 ghci 解释器并给出以下命令时
我可以在我的计算机上看到内存溢出 (1G)。这是意料之外的,如果我删除一名守卫,它的工作速度非常快。为什么在这种情况下它工作得太慢?
我做错了什么?