# functional [![Build Status](https://travis-ci.org/lexi-lambda/functional.svg?branch=master)](https://travis-ci.org/lexi-lambda/functional) [![Coverage Status](https://coveralls.io/repos/github/lexi-lambda/functional/badge.svg?branch=master)](https://coveralls.io/github/lexi-lambda/functional?branch=master) This library provides **functional programming utilities** for Racket, including interfaces, such as functors and monads, and common data types that implement those interfaces, such as maybe and either. Here’s an example of performing monadic computations using `functional`: ```racket #lang racket (require data/applicative data/monad data/maybe) (define try-bytes->string/utf8 (curry exn->maybe exn:fail:contract? bytes->string/utf-8)) (define input-char-length (do [str <- (try-bytes->string/utf-8 (port->bytes))] (pure (length str)))) ``` [**For more information, see the documentation.**][functional-doc] [functional-doc]: http://docs.racket-lang.org/functional/index.html