Pattern matching

If you set value as function argument, it become pattern It only call when passed argument is matched.

fact 0 = 1;

If you set normal symbol as function argument. It call any case without configured pattern.

fact n = * n (fact (- n 1))