问题标签 [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 投票
2 回答
961 浏览

haskell - Haskell - 使用 Reader monad 的二叉树中每个节点的深度

我写了以下代码。它正在工作并使用Reader单子。

你能给我一些关于 Haskell 代码风格的提示吗?主要是,我的意思是单子——我是新手。

0 投票
2 回答
236 浏览

haskell - 如何查看 Monad Reader 的代码?

我是 Haskell 的初学者,我想了解 Reader Monad。我知道如何使用这个单子。但我想看看 monad 的实现(特别是函数“return”的代码)。我怎样才能看到这个代码?

0 投票
1 回答
400 浏览

haskell - 如何与自定义类型类一起构建自定义阅读器 monad?

我正在尝试将http://lexi-lambda.github.io/blog/2016/06/12/four-months-with-haskell/(标题为“Typeclasses can emulate effects”的部分)与一些方法结合起来有点像本土读者单子。

我要解决的总体问题是避免将配置变量传递给我的应用程序中几乎所有功能。我不能使用 a 的原因ReaderT是因为我的很多函数都在 in SqlPersistT,它本身在ReaderT内部使用 a 。另一个原因是更好地学习所有这些心理体操。

我的两个问题在下面的代码中作为注释给出。在这里也复制它们:

  • 最合适的定义方式是NwMonad什么?
  • 因此,如何定义NwMonadHasNwConfig? 函数体怎么写askNwConfig
  • 我最后怎么打电话runNwMonad?它的论点是什么?

这是代码:

0 投票
1 回答
662 浏览

scala - Scala 中的 Reader monad:返回、本地和序列

Reader在 Scala 中使用由scalaz库提供的 monad。我熟悉Haskell 中定义的这个 monad 。问题是我找不到等效于returnlocalsequence(以及其他)的函数。

目前我使用我不喜欢的构造,因为我在重复自己或使我的代码有点晦涩。

关于return,我目前正在使用:

我宁愿只使用类似的构造unit(someValue),但我在互联网上找不到任何东西。有像这样的教程使用上述方法,我认为这不是最佳的。

关于local我也必须做类似的事情:而不是输入类似的东西:local f myReader我必须展开它的定义:

最后,序列有点接近我的预期(作为一个使用 Scala 的 Haskell 难民):

我对这个实现的问题是,对于 Scala 来说相对较新,sequenceU

看起来相当晦涩,似乎是黑魔法。理想情况下,我想sequence在 Monads 上使用操作。

scalaz 或类似库上是否有将这些构造更好地转换为 Scala 的方法?我没有与 Scala 的任何函数库结婚,因此任何使用其他库的解决方案都可以,尽管我宁愿使用 scalaz 来回答,因为我已经使用它实现了我的代码。

0 投票
2 回答
453 浏览

scala - Scalaz:“scalaz.syntax.applicative._”如何发挥它的魔力

这个问题与这个问题有关我试图了解如何在 Scala 中使用 reader monad。

在答案中,作者使用以下代码获取实例ReaderInt[String]

Scala 使用哪些机制来解析表达式的类型,"hello".point[ReaderInt]以便它使用正确的point函数?

0 投票
1 回答
531 浏览

haskell - Reader 和 MonadReader

为什么 Control.Monad.Reader 中有 Reader monad 和 MonadReader monad?包文档讨论了 Reader monad,然后直接进入 MonadReader 文档,没有任何解释。这些单子有什么区别?阅读这些参考页面让我感到困惑。有趣的是,Haskell wikibook 的 Reader monad 页面尚未编写!

0 投票
1 回答
312 浏览

scala - Reader monad - 它如何符合 Monad 接口?

我正在学习范畴论。我理解 reader monad 的概念,它甚至很容易实现:

但是,我在限制某些通用 Monad 接口的情况下实现它时遇到问题,即

让我们暂时忘记有一个 applicative 或 functor,让我们把这 3 个方法放在这里。

现在,有了这个接口,我在实现 ReaderMonad 时遇到了问题。map 方法非常简单,但是 pure 和 flatMap 呢?纯阅读器意味着什么?要实现 flatMap,我需要从 A 到 Reader[DEP, B] 的函数,但我有 A => Monad[B],因此无法访问 apply。

是否可以在scala中以这种方式实现它?我尝试使用自绑定类型,但它也不起作用。我知道像scalaz或cats这样的库使用类型类来实现这些类型,但这只是为了教育目的。

0 投票
2 回答
312 浏览

haskell - Powerset-over-Reader monad 是否存在?

用于环境共享和不确定性的规范“Monad 实例”如下(使用伪 Haskell,因为 HaskellData.Set不是,当然,monadic):

通常,当尝试将像 Powerset(List、Writer 等)这样的“容器”monad 与第二个 monad m(这里大致是 Reader)结合起来时,一个“包裹”m在容器 monad 周围,如上所述。

那么,我想知道以下潜在的 Powerset-over-Reader 规范:

这似乎并不明显(我确实意识到 GHCi 无法检查rb r == rb' r许多rband rb'),但bind'它足够复杂,以至于(对我而言)难以检查单子定律是否成立。

那么,我的问题是,是否eta'并且bind'真的是单子的——如果不是,违反了哪条法律,这可能对应于什么样的意外行为?

第二个问题,假设它不是一元的eta'bind'是如何确定是否存在具有这些类型的函数?

0 投票
2 回答
179 浏览

haskell - 为什么要将Reader的构造函数参数定义为函数?

在学习 Reader Monad 的时候,我发现它是这样定义的:

我想知道为什么使用函数作为构造函数参数而不是元组之类的其他东西:

根据 Reader 的定义,我们需要一个可以用来生成“价值”的“环境”。我认为 Reader 类型应该包含“环境”和“价值”的信息,所以元组看起来很完美。

0 投票
1 回答
228 浏览

haskell - 如何将 Reader Monad 与 (Int -> Int) 一起使用?

我想学习如何使用 Reader Monad。不幸的是,只有少量示例代码可用

我想创建一个阅读器,其中环境和检索的值是Int. 我定义了这样的类型:

我试过的代码是这样的:

我得到一个错误,因为ReaderT是预期的。如何创建类似addStuff使用 Reader Monad 的函数?我应该在哪里为这个函数提供环境?