Necessary laws -------------------------------------------- For ◎ to work like composition, we need join to hold the following properties: - `join (join (F (F (F a))))=join (F (join (F (F a))))` - abusing notations denoting `join` by ⊙; this is equivalent to `(F ⊙ F) ⊙ F = F ⊙ (F ⊙ F)` - There exists `η :: a -> F a` s.t. `η⊙F=F=F⊙η`