•Operación binaria asociativa cerrada Operador composición >>> func f <A>(param: A) -> A { … } func g <A>(param: A) -> A { … } •Elemento Identidad func id <A>(param: A) -> A { return param }
// A -> M<A> func g <A>(a: A) -> M<A> { return M(a) } // A -> M<A> var composition = {(a:Int) in f(a) >>= g} // \ A -> { (M<A>, transformación: A -> M<A>) -> M<A> } // \ A -> M<A> ✅