///| pub fn[A, B, C] compose(fa : (A) -> B, fb : (B) -> C) -> (A) -> C { fn(a) { a |> fa |> fb } } ///| pub fn[A, B, C, D] compose_2( fa : (A) -> B, fb : (B) -> C, fc : (C) -> D ) -> (A) -> D { fn(a) { a |> fa |> fb |> fc } }