问题标签 [kleisli]
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.
scala - 组合返回选项的函数
假设我有一些类型的函数Int => Option[Int]
:
我可以>=>
按如下方式组合它们:
假设现在我需要组合列表中的所有函数:
我可以用map
and做到这一点reduce
:
它(composed
以上)可以简化吗?
xml - 如何使用 Endomorphic wrapper 修复这个练习?
这是我之前的问题的后续。
假设我需要按路径查找 XML 节点。我可以编写一个函数来按名称获取子节点
我child
用 kleisli 编写函数;例如
现在我正在使用内构包装器,但它不起作用:
你能帮忙找出错误吗?
scala - 为什么 Scalaz 中没有 A => M[A] 的 >=> 半群?
这是我上一个问题的后续
Kleisli
定义了两个运算符<=<
(compose) 和>=>
(andThen)。对>=>
我来说看起来很自然,我不明白怎么<=<
会有用。
此外,看起来没有>=>
半群,A => M[A]
但<=<
半群确实存在。
其背后的原理是什么?
scala - 通过 scalaz 中的 Kleisli 箭头组合函数时,无法在 Coyoneda 上找到 Free Monads 的 Bind 实例
预先感谢您的帮助
我有 2 个函数正在尝试通过 Kleisli 箭头编写。这些函数接受字符串并生成 FreeC。kleisli 箭头的创建没有问题,但编译器抱怨它找不到。为简单起见,我将删除一些代码:
出于某种原因,我得到的是这个编译错误:
感觉应该解决隐含问题,因为 FreeC 在实现 Bind 特征的 monad 实例中,并且我正在通过 import Free._ 导入所有 Free 隐含实例
我在这里想念什么?
先感谢您!
haskell - 为什么 Kleisli 不是 Monoid 的一个实例?
如果您希望附加两个 (a -> mb) 类型的函数,以便只获得一个附加两个结果的相同类型的函数,则可以使用 Kleisli 来执行此操作:
但是,目前没有在 中定义这样的实例Control.Arrow
。通常,在 Haskell 中,我怀疑有一个很好的理由,但找不到哪一个。
笔记
这个问题与这个问题很相似。但是,对于 Monoid,我看不到定义实例的方法,例如:
因为已经有一个实例:
scala - 有没有构成 Kleisli 内同态的有趣例子?
这是我之前的后续这是我之前的问题
我们可以将通过路径查找 XML 节点的函数定义为函数(List[String], XmlNode) => Option[XmlNode]
的组合(String, XmlNode) => Option[XmlNode]
按名称获取子节点
我们使用这样一个事实,即函数A => M[A]
,其中M
是一个单子,形成一个monoid
因此我们可以轻松地组合它们。
现在我想知道是否还有其他有趣的例子来组合这些函数。
scala - 在 Scala 中编写 Kleisli 和 Reader monad
假设我有这样的功能:
我想将它们组合成一个新函数,它依次fooXAD: X => A => Try[D]
调用fooXAB
、fooXBC
和,并将参数传递给它们。fooXCD
X
假设我使用scalaz
并有一个 monad 实例scala.util.Try
。现在我可以这样做:
是否有意义?是否可以简化它?
scala - 在 Scala 中使用 Writer 和 Kleisli 验证 XML
这是我之前的问题的后续
假设我需要验证这样的 XML:
我需要确保根元素有 labela
并且也有 children <a1>xxx</a1>
, <a2>yyy</a2>
,<a3>zzz</a3>
按此顺序。
我想List[String]
用来收集错误并定义一个函数来验证单个 XML 元素,如下所示:
现在我可以编写函数来验证给定 XML 元素的标签、文本和属性:
我可以用|+|
因为ValidateSingleElement
是一个幺半群来组合这些函数。
现在我需要一个函数来验证给定元素的子元素。为了编写这样一个函数,我需要另一个函数来验证一系列元素
ValidateElements
定义如下:
我在遍历元素序列时使用List[String]
and Writer
monad 来收集错误。
现在我可以编写一个函数来验证给定元素的子元素:
...并验证序列的第一个元素:
最后我可以重新定义ValidateElements
为Kleisli
...并重新编写child
返回Kleisli
而不是函数。
鉴于两者child
,children
我可以编写a
- 从上面的 XML 验证函数:
是否有意义 ?您将如何纠正/扩展此设计?
scalaz - 如何使用 Kleisli 减少样板文件
我遵循功能和反应域建模这本书的设计
对于某些服务方法,它仅将工作委托给存储库层。有没有办法减少这个样板:
scala - 如何组合 Kleisli[M, A, C] 和 Kleisli[M, B, C]
我遵循优秀书籍Reactive Domain Modeling的设计,我需要混合Kleisli
不同的类型:
由于类型不对齐,我收到以下编译错误
解决这个问题的最佳方法是什么,创建一个
和污染UserService
和ProjectService
它?