;;;; factorial macros
;;; Not very useful, but they do demonstrate some macro programming techniques.
;; recursive factorial
/def rfact = \
/if ( {1} < 0 ) \
/echo -e %% %0: negative argument%; \
/elseif ( {1} == 0 ) \
/result 1%; \
/else \
/result {1} * rfact({1} - 1)%; \
/endif
;; iterative factorial - more efficient
/def ifact = \
/if ( {1} < 0 ) \
/echo -e %% %0: negative argument%; \
/else \
/let n=%1%; \
/let result=1%; \
/while (n) \
/test (result:=result * n), --n%; \
/done%; \
/result result%; \
/endif