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

0 投票
1 回答
220 浏览

scala - 如何使用 Kleisli 实现缓存

我遵循了《功能和反应式建模》一书中的设计原则。

所以所有的服务方法都返回Kleisli

问题是如何在这些服务上添加可更新缓存。

这是我目前的实现,有没有更好的方法(现有的组合器,更多功能的方法,......)?

[更新] 关于@timotyperigo 的评论,我已经在存储库级别实现了缓存

我仍然对改进设计的反馈感兴趣。

0 投票
1 回答
141 浏览

scala - 如何将选项与 Kleisli 结合使用

给定一个方法

我需要一个与Option[A]

我的第一次尝试是:

但是在阅读了如何组合 Kleisli 序列之后,我想出了一个更好的版本:

有什么改进的想法吗?

0 投票
1 回答
74 浏览

scala - 使用 scalaz kleisli 之前没有显式包装函数

假设我有两个函数val f: A => M[B]val g: B => M[C]其中 M 是一元的。因此,我想通过使用 kleisli 将它们组合起来。我目前所做的是:kleisliU(f) andThenK g 但是我还没有找到一种方法来执行这种组合,而无需先手动包装到 kleisli 中。

怎么能写出这样的东西f <???> gf自动包装到kleisli中,然后再结合g?我希望 scalaz 中已经存在一些东西,并且我不需要编写自己的隐式类/转换。

只是为了完整起见,这也应该与更多功能一起使用,例如f <???> g <???> h.

0 投票
1 回答
239 浏览

scala - 从 monad 中提取(解除?)函数

我需要从 monad 中提取函数,这对于任何 monad 都是可能的:

我在 scalaz 和 hoogle 中都找不到这样的功能。

我试图在 Kleisli 上使用排序(这个想法是做 sequence . join )或 unlifting 来达到同样的效果,但这变得过于复杂,所以我停止了。

我的问题是 - 我只是找不到这个功能还是没有人出于任何原因使用它(如果是,那么如何实现相同的目标)?

谢谢!

0 投票
2 回答
164 浏览

haskell - 函数和 Kleisli 箭头的应用

(.)并且(<=<)非常相似:

并且可以作为Category类型类((->)Kleisli实例)中的方法使用:

($)并且(=<<)也非常相似:

是否有抽象这些应用程序功能的类型类?

0 投票
1 回答
307 浏览

scala - 如何在 Scala Cats 中创建一个 EitherT 的 Kleisli 实例?

我花了一段时间来研究这个,但仍然无法让类型系统同意我的观点,即这种抽象实际上是一个

我目前的类型看起来像


为了测试实例化这种类型,我编写了一个非常简单的函数,它接受一个 jsonString并返回一个Either[Throwable, JsonNode]


我收到此错误消息:


我意识到这种类型有点麻烦,并且肯定可以改进(并且可能是矫枉过正),但我现在正在深入研究这个,以了解更多关于 Cats 和 Scala 类型系统的信息,以便我自己的个人成长。Scala 试图告诉我什么是错误的,在这里,我应该如何解决这个问题?

0 投票
1 回答
101 浏览

scala-cats - 如何将 Kleisli[Try, I, A] 转换为 I => A

是否有现有的组合器或更好的编写方式?

0 投票
3 回答
312 浏览

scala - Kleisli 列表到 Kleisli 列表

我想知道是否有办法List[Kleisli[Option, Int, Int]]转向Kleisli[Option, Int, List[Int]].

特别是我有这样的 kleisli 列表:

我做的是以下

这非常混乱,没有表现力,需要大量的手工工作。

有没有更好的办法?

0 投票
1 回答
682 浏览

scala - 如何将 Scala Cats 的 Kleisli 与 Either 一起使用

我正在尝试使用 Kleisli 来编写返回 monad 的函数。它适用于选项:

但我不能让它与 Either... 一起工作:

我猜 Either 有两个类型参数,而 Kleisle 包装器需要一个输入和一个输出类型参数。我不知道我怎么能从 Either 中隐藏左类型...

0 投票
1 回答
70 浏览

scala - 让 State 如何与 Kleisli 合作?

我有一个用 State monad 包装的记录器的示例:

哪个效果很好,但我对添加 State monad 之前并不满意,代码更加清晰,即:

我想知道如何让 State 与 Kleisli 合作?这样所有的单子都会像一个一样一起工作?

而不是logger意志的作用i2ff2s功能,也能在里面起作用?