Fluokitten 0.10.0
Released under the Eclipse Public License
Category theory concepts in Clojure - Functors, Applicatives, Monads, Monoids and more.
Installation
To install, add the following dependency to your project or build file:
[uncomplicate/fluokitten "0.10.0"]
Namespaces
uncomplicate.fluokitten.core
Contains core Fluokitten categorical functions. This is the namespace that you want to use or require in your projects that use Fluokitten built-in functionality or the functionality of various other libraries that implement Fluokitten protocols. Intended use: use or require this namespace and other namespaces that contain the implementations of the protocols, by default jvm.
uncomplicate.fluokitten.jvm
Extends Clojure core with the implementations of fluokitten protocols. Defines curried functions. Need to be used or required for enabling Fluokitten on projects that run on JVM platform.
Public variables and functions:
uncomplicate.fluokitten.protocols
Defines Fluokitten protocols for various categorical concepts. You need to use or require this namespace and provide your implementations of these protocols if you want to extend Fluokitten with specific instances of categorical concepts beyond those from Clojure core that Fluokitten itself extends to be categorical. To use your own implementations, you need to use or require the namespace where you define the implementations from the calling code's namespace, as well as to use or require Fluokitten core. Your implementations are normally not called directly from the client code. The client code should call the generic functions from Fluokitten core.
Public variables and functions:
uncomplicate.fluokitten.test
Macros that generate Midje tests for various laws that categorical concepts have to satisfy. You should use these tests to check if your implementations of clojure protocols are valid beyond what the compiler can assert.
Public variables and functions:
- applicative-law1
- applicative-law2-identity
- applicative-law3-composition
- applicative-law4-homomorphism
- applicative-law5-interchange
- check-eq
- data-structures-should-preserve-metadata
- extract-is-dual-of-pure
- fapply-keeps-type
- fmap-keeps-type
- functor-law2
- magma-op-keeps-type
- monad-law1-left-identity
- monad-law2-right-identity
- monad-law3-associativity
- monoid-identity-law
- semigroup-op-associativity