问题标签 [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.

0 投票
1 回答
260 浏览

haskell - 重构使用 Reader monad 的 Haskell 函数

我有一些看起来像这样的代码,忽略了所有与我的问题无关的代码:

有没有办法重构这个?具体来说,嵌套bar'函数最困扰我。这可以浓缩成一行吗?

0 投票
0 回答
46 浏览

haskell - 斯科蒂和读者单子

我试图在我的 Scotty 应用程序中引入 Reader monad,作为在内部为 URL 扩展提供统一根路径的一种方式。我似乎无法理解 Scotty 如何处理 monad 转换 - 通常,我只会看到类似的东西runTransformerT ...,但scottyT有很多内部管道要做,所以结果实际上只是一个(如果在函数中使用,则MonadIO n => n ()强制,就像我在这里)。IO ()main

到目前为止,这是我的代码:

我得到的错误是:

我该如何使用这个魔法?

0 投票
1 回答
331 浏览

purescript - Purescript 中的 Reader Monad

我在 Purescript 中玩 Reader monad,遇到了一个奇怪的行为。我不知道是因为我对这个单子缺乏理解还是我错过了其他东西。

这是我的代码:

这没关系,并且会编译。不过,在此之前,我在函数行中尝试了一些更简单的方法,如下所示:

而且它不会编译,尽管 (renderLine s level) 和 "Hello Reader monad" 具有相同的类型。它会给我这个错误:“没有找到 Control.Monad.Reader.Class.MonadReader u14555 的实例(Control.Monad.Reader.Trans.ReaderT Prim.Number Control.Monad.Identity.Identity)”

我确定我错过了一些东西,但我不知道是什么。

0 投票
1 回答
1818 浏览

scala - Scalaz 中的 Kleisli、ReaderT 和 Reader 是一样的只是巧合吗?

在斯卡拉兹

  • Kleisli[F, A, B]A => F[B].
  • ReaderT[F, A, B]-- reader monad transformer -- 只是Kleisli[F, A, B].
  • Reader[A, B]monad 是ReaderTwith identity monad的一个特化Id
    type Reader[A, B] = ReaderT[Id, A, B].

这只是巧合还是有一些更深层次的原因在 ScalazKleisli中是ReaderTReader构的?

0 投票
1 回答
63 浏览

scala - 下面的存储库如何被线程(传递)到每个函数调用中?

我确信下面的下划线是单位,意思是函数返回值被忽略。(以下内容取自本书功能和反应域建模)。如果这是正确的,那么我对以下代码有疑问:

这段代码能正常工作吗?它将,只要我们给 Function1 一些额外的权力,这是通过理解线程化的类型。

所以我应该将存储库传递给 res0 - 我不明白存储库是如何被限制到上面的每个贷记/借记方法的?我知道操作从存储库返回一个函数到帐户但是让我感到困惑的是所有这些下划线 - 下划线是否意味着我们摆脱了函数返回值的理解?如果我们忽略返回值,那么我们如何将这些函数传递给存储库?

0 投票
1 回答
173 浏览

haskell - 如何利用 Free 的 MonadReader 实例?

我想在我使用 Free monad 创建的 DSL 中使用 Reader。

我注意到这里有一个免费的 MonadReader 实例:

https://hackage.haskell.org/package/free-4.12.1/docs/src/Control-Monad-Free.html#line-264

如果我尝试ask在用 EDSL 编写的程序内部调用,我会收到类型错误“No such instance MonadReader Free MyDSL”

我最终会想在我的 DSL 中使用其他 Monad,例如 MonadError 和 Logging monad,但 Reader monad 只是我尝试过的第一个。

0 投票
2 回答
183 浏览

haskell - 将 (->) r 理解为 Reader 的实例

所以我被告知(->) r是 Reader monad 的一个实例,但我似乎找不到任何具体的例子来说明它应该如何工作。我想使用它而不必在阅读器中显式包装我的一些代码

运行runReader testOne "there"正常,但运行runReader testTwo "mate"失败并显示以下消息:

那么我在这里错过了什么?

0 投票
1 回答
296 浏览

scala - 在 Scala 中编写 Kleisli 和 Reader monad

假设我有这样的功能:

我想将它们组合成一个新函数,它依次fooXAD: X => A => Try[D]调用fooXABfooXBC和,并将参数传递给它们。fooXCDX

假设我使用scalaz并有一个 monad 实例scala.util.Try。现在我可以这样做:

是否有意义?是否可以简化它?

0 投票
1 回答
396 浏览

scala - 地图和平面地图操作对 ReaderMonad 意味着什么

我是一个斯卡拉新手。我来自 Java 的背景。我一直在阅读 monads 并且已经形成了关于它的一般概念。虽然我可以理解类型的mapandflatMap操作,例如当涉及到sList时,我无法理解它们的含义。reader monad有人可以举一些简单的例子吗?

我知道我们需要 ReaderMonads 来促进一元函数组合,以便我们可以使用像 for - 理解这样的花哨的语法。我也明白,我们需要满足单子神才能实现这一点。我只想了解“地图和平面地图”对功能意味着什么?

0 投票
2 回答
596 浏览

haskell - 使用 foldl 递归遍历 AST 和没有样板的 Reader monad

我正在使用简单模式匹配monad遍历ASTReader

在我的项目的其他地方,我定义了一个用于遍历 AST 的walk函数,它的核心是用于将访问树中每个节点的结果减少为单个monoidalfoldl结果(例如,从特殊的树中的节点)。

我的问题是:是否可以结合这两种方法并使用像我的函数这样的walk函数:

以及Reader——就像下面代码中的遍历(为简洁起见省略了一些位)——同时?

我在这里使用的动机是,我的walk函数已经编码了如何为每个模式获取孩子以及如何执行 AST 的有序遍历的知识。我真的不想为每次遍历重新实现它,所以walk在更多地方使用会很好,包括我需要使用的地方Reader(可能稍后State,可能在堆栈中)。

这些东西可以有效地结合起来吗?