问题标签 [reader-monad]
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.
haskell - 如何将 Control.Monad.Reader 中的 mapReader 用于 reader monad?
我试图弄清楚如何使用mapReader
from Control.Monad.Reader
。
例如我有这个读者单子
我可以这样运行
现在我正在尝试检查 runReader 返回的值是否偶数。不使用mapReader
我可以这样做
但我想通过使用mapReader
https://hackage.haskell.org/package/mtl-2.2.2/docs/Control-Monad-Reader.html#v:mapReader来做到这一点
我尝试了以下但它不工作。
请在这里帮助我。
haskell - Haskell中的“询问”是什么意思,它和“询问”功能有什么区别?
我不明白如何使用该ask
功能,我知道如何使用该asks
功能,但我不知道它们是否相关。
我正在阅读斯蒂芬的“我希望在学习 Haskell 时知道什么”,我发现了这个例子:
所以,我的问题是:从哪里获取列表?
haskell - 什么是“你调用的函数”,什么是“调用你的函数”?
我试图了解什么是 Haskell Reader monad,但我在书中的这一部分遇到了困难:
类型参数的“只读”性质
r
意味着您可以r
为您调用的函数交换不同的类型或值,但不能为调用您的函数交换。证明这一点的最好方法是使用这个withReaderT
函数,它让我们可以Reader
通过提供不同的参数来启动一个新的上下文:
那么,首先,您能否指定要考虑“您调用的函数”以及要考虑“调用您的函数”的内容?
haskell - 阅读器单子 - 阅读器与询问功能差异?
reader monad有一个asks函数,它完全定义为reader函数,为什么它作为一个单独的函数存在,其定义与reader相同?为什么不总是使用阅读器?
haskell - 如何在haskell中编写有状态的dbus方法?
我在 haskell 中使用dbus,我很难弄清楚如何导出执行有状态操作的 dbus 方法。下面是一个完整的例子来说明我卡在哪里。
假设您正在使用 dbus 编写计数器服务。当服务启动时,计数器最初为 0。服务定义了一个 dbus API,它公开了一个count
方法,该方法返回计数器的当前值,以及一个update
方法,该方法递增该计数器并返回新值。
这是我刚刚描述的行为的伪代码实现,使用消息传递样式的通信:
但是,dbus 使用方法调用,而不是消息传递。所以,我需要能够导出一个count
和update
我的消息传递示例中行为方式相同的方法。
我们将使用的存根是这样的:
这就是我的问题:我应该如何编码缺失{-- call update? --}
和{-- return state? --}
功能?
我知道我可以使用 anMVar
创建全局可变状态,然后从中读取函数,但我想在这里尽可能避免可变性。我想我可以用 Reader/State monad 以某种方式做到这一点,也许通过将get
/偷偷ask
带入函数中,但我不知道如何处理与 DBus 相关的类型。
haskell - 无法在 ReaderT 包装中推断出 MonadReader
遵循并改编这篇博文,我一直在尝试生成一个解决方案,该解决方案应该允许测试读取 env vars 的函数(使用System.Environment.lookupEnv)。
这样,我应该能够为测试注入一个人工环境,可以读取它来代替执行实际的 IO 操作。
但是,尝试读取 env 时类型检查失败。
在上面“询问”的位置,会产生以下错误:
请您帮我理解为什么这无法进行类型检查以及我需要做些什么来解决它?提前致谢。
typescript - RxJs mergeMap 中的 Reader monad
我正在使用rxjs
并希望使用包中的Reader
monadfp-ts
作为依赖注入解决方案。
这是我的代码:
fn1
函数具有使用Reader
monad注入的依赖项
问题是当我在 amergeMap
中使用此函数时,返回值是 aReaderObservable
而不是 anObservable
并导致错误。
我怎样才能ReaderObservable
在里面使用mergeMap
?