Typelevel Cats.Effect 与 Typlevel eff。哪个,为什么?
Typelevel Cats.Effect vs Typlevel eff. which and why?
我想做一些需要效果的编程(谁不需要 :-)。
特别是像 scalaz Task 这样的东西 运行 一些异步数据检索和 ruturn 类似 Future 的效果,它将在完成时处理结果。
我注意到 typelevel Cats 现在有 Effect Monad,还有 typelevel eff Monad 项目。两者都是为了在功能上处理效果。所以现在我可以选择在哪里投资我的时间,我很困惑。
- 我应该使用哪个?
- 每个图书馆是否有一些潜在的精神或意图
指导我的选择?
- 每个库的用途是什么?
- 它解决了什么问题?
或者我可以在一个有效的 FutureEffect 或 TaskEffect 中同时使用两者,例如 wrap cats.Effect。这是个好主意吗?
谢谢
尽管它们的名称有些相似,但两个项目的目的完全不同。
cats-effect 的目的是为 Scala 提供一个 principled/standard IO
类型(+一些其他相关的类型类),一种抽象的方法超越它(例如同步、异步等)并提高第 3 方库之间的互操作性和可组合性。
Eff 的目的是提供一种替代 monad 转换器 (mtl) 编程风格的方法。它不一定处理 IO/Task 之类的,但提供了一种更清晰的堆叠效果的方法(例如,如果您需要组合 Reader + State + Writer 效果,手动执行会很痛苦)。
根据您的描述:
In particular something like scalaz Task to run some asynchronous data retrieval and ruturn a Future like effect that will handle the resuts on completion.
看来 cats-effect
能更好地满足您的需求。
我想做一些需要效果的编程(谁不需要 :-)。 特别是像 scalaz Task 这样的东西 运行 一些异步数据检索和 ruturn 类似 Future 的效果,它将在完成时处理结果。
我注意到 typelevel Cats 现在有 Effect Monad,还有 typelevel eff Monad 项目。两者都是为了在功能上处理效果。所以现在我可以选择在哪里投资我的时间,我很困惑。
- 我应该使用哪个?
- 每个图书馆是否有一些潜在的精神或意图 指导我的选择?
- 每个库的用途是什么?
- 它解决了什么问题?
或者我可以在一个有效的 FutureEffect 或 TaskEffect 中同时使用两者,例如 wrap cats.Effect。这是个好主意吗?
谢谢
尽管它们的名称有些相似,但两个项目的目的完全不同。
cats-effect 的目的是为 Scala 提供一个 principled/standard IO
类型(+一些其他相关的类型类),一种抽象的方法超越它(例如同步、异步等)并提高第 3 方库之间的互操作性和可组合性。
Eff 的目的是提供一种替代 monad 转换器 (mtl) 编程风格的方法。它不一定处理 IO/Task 之类的,但提供了一种更清晰的堆叠效果的方法(例如,如果您需要组合 Reader + State + Writer 效果,手动执行会很痛苦)。
根据您的描述:
In particular something like scalaz Task to run some asynchronous data retrieval and ruturn a Future like effect that will handle the resuts on completion.
看来 cats-effect
能更好地满足您的需求。