主要观点:
- 介绍了用于 Rust 的函子层次结构及相关糟糕想法,给出了一系列与函子、应用函子和单子相关的特质及宏等。
- 阐述了编写此内容的两个原因,一是看是否可行,二是作为带有复杂类型签名的玩笑。
- 探讨了 Rust 是否能实现函子层次结构,指出存在无约束类型、GATs 不是高阶类型且使用起来较混乱等问题。
- 结论是 Rust 接近实现函子层次结构但仍未准备好,整个库更像是一个练习和语言特性的引导,同时指出一些设计上的不足。
关键信息:
- 提供了
Functor
、Bind
等特质的实现及相关宏,如run!
宏。 - 提到无约束类型导致无法为
HashSet
实现Functor
等问题,以及 GATs 在表达 HTKs 时的困难和额外的约束需求。 - 说明此项目有特定的许可证(Mozilla Public License v. 2.0)和行为准则(Contributor Code of Conduct)。
重要细节:
Functor
特质的定义及Vec
的实现示例,以及HashSet
实现时的类型约束问题。Bind
特质的实现及组合两个Bind
的函数compose_binds
中遇到的类型推断和约束问题。- 提到借用检查器等在实现过程中的影响,以及无法为除装箱函数外的其他函数实现
Apply
等。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。