fixpoint
pub fn compose<A, F, G>(a: A, f: F, g: G) -> Fix<A> where F: FnMut(A) -> Fix<A>, G: FnMut(A) -> Fix<A>,