rustz

Crates.iorustz
lib.rsrustz
version0.1.4
sourcesrc
created_at2017-06-11 16:31:07.429225
updated_at2017-12-30 09:50:09.071907
descriptionA library for functional programming in Rust.
homepagehttps://github.com/algermissen/rustz
repositoryhttps://github.com/algermissen/rustz
max_upload_size
id18541
size30,062
Jan Algermissen (algermissen)

documentation

README

Rustz is a library for functional programming in Rust.

It provides as-pure-as-useful functional data structures to improve the functional programming experience with Rust. It implements a set of instances of the foundational functional type classes (e.g. Functor, Monad) for a large number of data structures.

The implementation tries to be as close to the pure functional implementations of these data structures, but also tries to remain practical given the specifics of the Rust programming language.

Status

This is currently a means for myself to explore functional programming in general and also to understand what is possible within the inherent limits of Rust. If the overall approach turns out to be possible without negating Rust's design principles and performance goals the plan is definitely to move this to production grade functional library.

You can track my plans and progress here.

Data Structure Status
Lense First working version
Applicative Early experiments
ValidationNel Early experiments
State Monad Initial attempt, working but needs refactoring on lifetimes.
Reader Monad Working version, needs cleanup and refactoring
Writer Monad Planned
ReaderT Planned for Option, Tokio futures, other type classes usually needed with Web service development.
Free Monad Tried this, but not sure if possible in Rust in a useful way. I also do not really grok Free - giving this up for now. Help welcome..
... Please open issues for anything you'd like to see here

Like-Minded Crates

Functional Programming in Rust Discussions

Discussions on Impl-Trait

Discussions on Higher Kinded Types

Commit count: 23

cargo fmt