> How this one could be connect with pattern-matching task.
Sorry if my far-fetched analogy confused things rather than clarifying
them. It's just the idea of defining different cases without an
explicit conditional. The analogy would have been much better if you
could say things like
foo[cons(a,b)]:= ...
or declare(e,even) foo[e]:=...
but you can't -- you must use explicit pattern-matching declarations.
> (C8) fact[0]:=0;
This should have been fact[0]:0; -- note the colon instead of
colon-equals ;-).
-s