5 个版本
使用旧的 Rust 2015
0.1.4 | 2017 年 12 月 30 日 |
---|---|
0.1.3 | 2017 年 12 月 27 日 |
0.1.2 | 2017 年 12 月 27 日 |
0.1.1 | 2017 年 12 月 27 日 |
0.1.0 | 2017 年 6 月 11 日 |
#1376 在 数据结构 中
26KB
662 行
Rustz 是 Rust 中函数式编程的库。
它提供了尽可能纯且实用的函数式数据结构,以改善 Rust 中的函数式编程体验。它为大量数据结构实现了一套基础函数类型类(例如 Functor,Monad)的实例。
实现尝试尽可能接近这些数据结构的纯函数式实现,但同时也考虑了 Rust 编程语言的具体情况。
状态
这目前是我探索一般函数式编程的一种方式,也是理解 Rust 内在限制下可能性的方式。如果整体方法在没有否定 Rust 的设计原则和性能目标的情况下是可行的,那么计划肯定是将这个库提升到生产级别的函数式库。
您可以在这里跟踪我的计划和进度。
数据结构 | 状态 |
---|---|
Lense | 第一个工作版本 |
Applicative | 早期实验 |
ValidationNel | 早期实验 |
State Monad | 初步尝试,工作但需要在生命周期上进行重构。 |
Reader Monad | 工作版本,需要清理和重构 |
Writer Monad | 计划中 |
ReaderT | 计划用于 Option,Tokio futures,以及其他在 Web 服务开发中通常需要的类型类。 |
Free Monad | 尝试过这个,但不确定在 Rust 中是否以有用的方式实现。我也不太理解 Free,所以现在放弃这个想法。欢迎帮助。 |
... | 请为任何您想看到的内容在这里打开问题 |
志同道合的 Crates
- https://github.com/KitFreddura/Kinder (基于有趣宏的 HKT 方法)
- https://github.com/mcoffin/rust-effect-monad (包含 trampoline 实现.)
- https://github.com/freebroccolo/monad.rs (包含 trampoline 实现.)
- https://github.com/freebroccolo/free.rs (Free monad / trampoline)
- https://github.com/ludat/hado-rs (do 表达式 / for 语句的宏)
- https://github.com/TeXitoi/rust-mdo (do 表达式 / for 语句的宏)
- https://github.com/danslapman/rust-mdo-future (对 mdo 的 Future 支持)
- https://github.com/ptal/partial)
- https://github.com/srijs/rust-operational (包含 Kleisli 等)
- https://github.com/freebroccolo/pipes.rs (Pipes)
- https://github.com/m4rw3r/chomp (解析)
- https://github.com/freebroccolo/tailrec.rs
- https://github.com/asajeffrey/parsell(解析)
- https://github.com/mgattozzi/curryrs
Rust中的函数式编程讨论
- http://blog.madhukaraphatak.com/functional-programming-in-rust-part-1/
- http://blog.madhukaraphatak.com/functional-programming-in-rust-part-2/
关于Impl-Trait的讨论
关于高阶类型(Higher Kinded Types)的讨论
- http://smallcultfollowing.com/babysteps/blog/2016/11/02/associated-type-constructors-part-1-basic-concepts-and-introduction/
- http://smallcultfollowing.com/babysteps/blog/2016/11/03/associated-type-constructors-part-2-family-traits/
- http://smallcultfollowing.com/babysteps/blog/2016/11/04/associated-type-constructors-part-3-what-higher-kinded-types-might-look-like/
- http://smallcultfollowing.com/babysteps/blog/2016/11/09/associated-type-constructors-part-4-unifying-atc-and-hkt/
- https://m4rw3r.github.io/rust-and-monad-trait
- https://www.reddit.com/r/rust/comments/57267j/traits_vs_higher_kinded_types/
- https://users.rust-lang.org/t/does-rust-really-need-higher-kinded-types/5531/3
- http://typelevel.org/blog/2016/08/21/hkts-moving-forward.html
- https://internals.rust-lang.org/t/higher-kinded-types-the-difference-between-giving-up-and-moving-forward/3908