pub fn list_cata<A, B>(alg: impl Fn(Option<(A, B)>) -> B, list: Vec<A>) -> B
A catamorphism (fold) over a list as a stand-in for Fix F.
cata(alg, list) = right-fold using alg.
cata(alg, list)
alg