3个不稳定版本
0.2.0 | 2023年1月18日 |
---|---|
0.1.1 | 2019年8月7日 |
0.1.0 | 2019年2月26日 |
#6 in #applicative
在 5 个crate(3 个直接使用)中使用
19KB
414 行
higher
Rust的函子层次结构和其他可怕想法。
是的,这为您提供了Rust中可泛化的monads。不,它们与Haskell相比并不十分出色,因为Rust的函数在类型系统的视角上并不完全是一等公民,实现例如为 HashSet
实现 Functor
的类型约束可能会成为一个严重的头疼问题,类型系统有时可能会特别复杂,并且需要大量的额外和极其冗长的指导才能正确地进行类型推断,但它们现在确实存在。
您将获得什么
- 一组精细粒度的特质(
Functor
、Pure
、Apply
、Bind
、Applicative
和Monad
),用于函子、应用和monads,灵感来源于 PureScript 和 Scala的 Cats。 - 双函子、反变函子和 profunctors,以完善。
- Haskell风格的do记法的
run!
宏。我本来希望将其命名为do!
或for!
,但不幸的是,这些是保留关键字,甚至对于宏也是如此。 - 为
Functor
和Bifunctor
提供派生宏。 - 半群和幺半群,以防万一。
- 包装标准
Future
的效果monads和包装可能失败的future的IO monads。 - 大部分
Foldable
,并打算随后实现一些Traversable
的功能。(它总是traverse
。) - 环和代数,以防万一。
- 可能没有很多好的文档,但就像任何好的Haskell程序员一样,您应该能够立即从函数的类型签名中推断出每个函数的目的。
您对这个项目的意图是什么?
我写这个有两个原因:首先,看看是否可行;其次,作为一个带有非常复杂的类型签名的胡说八道。如果你认为这实际上有用(而且我有点害怕发现自己开始这么想了),你可能希望站出来帮助维护它,因为一旦新鲜感消失,我怀疑我会给它很少的关注。
许可协议
版权所有 2019 Bodil Stokke
此软件受Mozilla公共许可证(v. 2.0)的条款约束。如果此文件中没有附带MPL副本,您可以在http://mozilla.org/MPL/2.0/获取一份。
行为准则
请注意,本项目发布时附有贡献者行为准则。通过参与本项目,您同意遵守其条款。
依赖关系
~1.5MB
~35K SLoC