CPL-0.0.5: samples/misc.cdt
# initial object
left object 0 with !! is
end object;
# coproduct functor
left object coprod(X,Y) with case is
in1: X -> coprod
in2: Y -> coprod
end object;
# co-"natural number object"
right object conat with copr is
pred: conat -> coprod(1,conat)
end object;
right object colist(X) with coprl is
delist: colist -> coprod(1,prod(X,colist))
end object;
# let list2colist = coprl(prl(in1, in2.prod(I, case(nil, cons))));
# let inflist2colist = coprl(in2.pair(head,tail));
# let colist-length = copr(coprod(I, pi2).delist);
# ordinals
left object ord with pro is
ozero: 1 -> ord
sup: exp(nat, ord) -> ord
end object;