public CoKleisli <C, B> Left <C>(CoKleisli <C, A> k) { return(Dot(k)); }
public CoKleisli <A, C> Right <C>(CoKleisli <B, C> k) { return(k.Dot(this)); }
public CoKleisli <C, B> Dot <C>(CoKleisli <C, A> k) { return(new CoKleisli <C, B>(c => RunCoKleisli(c.Extend(cp => k.RunCoKleisli(cp))))); }