pub fn fold_type<Id, T, F, A>(typ: &T, f: F, a: A) -> Awhere F: FnMut(&T, A) -> A, T: TypePtr<Id = Id>,