diff --git a/README.md b/README.md index 7722ad44..e4755566 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ - [Contributing](https://github.com/teloxide/teloxide#contributing) ## Features - - **Functional design.** Instead of writing separate handlers for every possible user action, all having access to some shared mutable state, you treat external events as a [stream](https://docs.rs/futures/latest/futures/prelude/trait.Stream.html) and apply a series of transformations to it. + - **Higher-order design.** teloxide supports [higher-order programming](https://en.wikipedia.org/wiki/Higher-order_programming) by making [streams](https://docs.rs/futures/latest/futures/prelude/trait.Stream.html) a [first-class citizen](https://en.wikipedia.org/wiki/First-class_citizen): feel free to demultiplex them, apply arbitrary transformations, pass to/return from other functions, [lazily evaluate them](https://en.wikipedia.org/wiki/Lazy_evaluation), concurrently process their items, and much more, thereby achieving extremely flexible design. - **Type-safe.** All the API [types](https://docs.rs/teloxide/latest/teloxide/types/index.html) and [methods](https://docs.rs/teloxide/0.2.0/teloxide/requests/index.html) are implemented with heavy use of [**ADT**s](https://en.wikipedia.org/wiki/Algebraic_data_type) to enforce type-safety and tight integration with IDEs. Bot's commands [have precise types too](https://github.com/teloxide/teloxide#commands), thereby serving as a self-documenting code and respecting the [parse, don't validate](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/) programming idiom.