Fluokitten: Guide List

Fluokitten documentation is organized as a number of guides, articles and API docs. The recommended way to use it is:

Getting Started

An overview of Fluokitten with a quick tutorial that helps you to get started with it. It should take about 15 minutes to read and try the provided code examples.

Fluokitten Documentation and Tutorials

These contain reference documentation and Fluokitten specific tutorials that should be read in parallel to learning resources provided in the next section.

API Documentation

Automatically generated reference API documentation.

Fluokitten Extensions of Clojure Core

This guide explains in detail how various Clojure core artifacts (collections, functions, references, etc.) implement Fluokitten protocols (Functor, Applicative, Monad, Monoid, Foldable etc)

Map and Reduce Primitive Arrays Without Clojure Macros

Fast Map and Reduce for Primitive Vectors

Fast Function Currying in Clojure (Without Macros)

Implementing Fluokitten Protocols

This guide explains how you can make your own implementations of Fluokitten protocols.

Tutorials on Category Theory in Programming - Clojure versions

These are the learning resources available for free on the Web that we think are very good at explaining category theory concepts in programming. In these articles, we point to the original content and provide our comments on how to use them with Fluokitten. We also provide partial or complete source code in Clojure of the examples used in these resources (which are usually originally written in Haskell). These Guides are meant to be read in this particular order.

Functors, Applicatives and Monads in Pictures

A Fluokitten version of an excellent visual introductory article Functors, Applicatives and Monads in Pictures.

Learn You a Haskell for Great Good

A Fluokitten Clojure code version of the sections of Learn You A Haskell for Great Good dedicated to Functors, Applicatives, Monads, etc. with comments and directions on how to use them together.

Tell Us What You Think!

Please take some time to tell us about your experience with the library and this site. Let us know what we should be explaining or is not clear enough. If you are willing to contribute improvements, even better!