% Functional Recursion: ; fact IS RECUR [ 0 =, 1 first, pass, product, -1 +] % from wikipedia; % Product of a range: ; fact IS * count; % Plain recursion: ; fact IS OPERATION x { if x = 0 then 1 else x * fact (x - 1) endif }; % While loop: ; fact IS OPERATION x { prod := 1; WHILE x > 0 DO prod := prod * x; x := x - 1; ENDWHILE; prod } % A basic divide by zero error: ; 1 / 0 # OUTPUT: ?div % Errors are also values called faults, giving you their location: ; 5 / 5 10 0 8 # OUTPUT: 1. 0.5 ?div 0.625 % You can also define custom faults using 'fault': ; fault 'this is an error' # OUTPUT: this is an error