<NME> README.md
<BEF> # Functors, Applicatives, And Monads in Python

Ø is a library for playing with functional programming in Python. It's
an attempt to re-implement some of the code from
[Learn You a Haskell for Great Good!](http://learnyouahaskell.com/) in
Python 3.4. The project currently contains implementations for:

## Abstract Base Classes


## Install

```bash
> pip3 install oslash
```

The project currently contains implementations for:

## Abstract Base Classes

- **[Functor](https://github.com/dbrattli/OSlash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures#functors)**, for stuff that can be mapped
 - Writer
 - Reader

Yes, I know there are other projects out there like
[PyMonad](https://bitbucket.org/jason_delaat/pymonad/), but I'm simply doing
this in order to better understand the book. It's so much easier to learn when
## Monadic functions

- **>>**, for sequencing monadic actions
- **lift**, for mapping a function over monadic values
- **join**, for removing one level of monadic structure
- **compose**, for composing monadic functions

## Utility functions

- **compose**, for composing 0 to n functions

## But why?

Yes, I know there are other projects out there like [PyMonad](https://bitbucket.org/jason_delaat/pymonad/),
[fn.py](https://github.com/kachayev/fn.py). I'm simply doing this in order to better understand the
[book](http://learnyouahaskell.com/). It's so much easier to learn when you implement things yourself. The code may be
similar to PyMonad in structure, but is quite different in implementation.

Why is the project called OSlash? OSlash is the Norwegian character called [Oslash](http://en.wikipedia.org/wiki/Ø).
Initially I wanted to create a project that used Ø and ø (unicode) for the project name and modules. It didn't work out
well, so I renamed it to OSlash.

## Examples

Haskell:

```haskell
> fmap (+3) (Just 2)
Just 5

> (+3) <$> (Just 2)
Just 5
```

Python:

```python
>>> Just(2).map(lambda x: x+3)
Just 5

>>> (lambda x: x+3) % Just(2)
Just 5

```

## Tutorials

Please take a look at the [Functors, Applicatives, And Monads In Pictures](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures)
in Python. It's a translation of the excellent [Functors, Applicatives, And Monads In Pictures](http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html)
in Haskell.

main = put_line("What is your name?") | (lambda _:
    get_line() | (lambda name:
    put_line("What is your age?") | (lambda _:
    get_line() | (lambda age:
    put_line("Hello " + name + "!") | (lambda _:
    put_line("You are " + age + " years old"))))))

if __name__ == "__main__":
    main()
```

## Tutorials

- [Functors, Applicatives, And Monads In Pictures](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures) in Python.
- [Three Useful Monads](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads) _(in progress)_
- [Using Either monad in Python](https://medium.com/@rnesytov/using-either-monad-in-python-b6eac698dff5)

<MSG> Updated readme

<DFF> @@ -3,7 +3,9 @@
 Ø is a library for playing with functional programming in Python. It's
 an attempt to re-implement some of the code from
 [Learn You a Haskell for Great Good!](http://learnyouahaskell.com/) in
-Python 3.4. The project currently contains implementations for:
+Python 3.4.
+
+The project currently contains implementations for:
 
 ## Abstract Base Classes
 
@@ -22,6 +24,16 @@ Python 3.4. The project currently contains implementations for:
  - Writer
  - Reader
 
+## Monadic functions
+
+- lift
+- join, for removing one level of monadic structure
+- compose, for composing monadic functions
+
+## Utility functions
+
+ - compose, for composing 0 to n functions
+
 Yes, I know there are other projects out there like
 [PyMonad](https://bitbucket.org/jason_delaat/pymonad/), but I'm simply doing
 this in order to better understand the book. It's so much easier to learn when
@@ -72,6 +84,5 @@ if __name__ == "__main__":
 
 ## Tutorials
 
-Please take a look at the [Functors, Applicatives, And Monads In Pictures](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures)
-in Python. It's a translation of the excellent [Functors, Applicatives, And Monads In Pictures](http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html)
-in Haskell.
+* [Functors, Applicatives, And Monads In Pictures](https://github.com/dbrattli/oslash/wiki/Functors,-Applicatives,-And-Monads-In-Pictures) in Python.
+* [Three Useful Monads](https://github.com/dbrattli/OSlash/wiki/Three-Useful-Monads)_(in progress)_

Updated readme