The following are some simple, bite-sized examples of Nial’s programming features. Some of these are executed within the Nial REPL nial -i to show intermediate results.

More complex example scripts can be found at the main development repository, and the libraries repository.

Partial Application

     % function composition is implicit: ;
     negsum is (opposite sum);
     negsum 1 2 3
     -6
% leaving out an infix parameter results in partial application: ;
     fiveplus is (5 +);
     fiveplus 1
6
     % partial application also generalizes to function composition: ;
     fun is (1 - opposite)
     fun 5
6

Keywords and Symbols

     % You can use symbol := or 'gets' for data assignment ;
     abc gets 1;
     abc
1
     bcd := 1;
     bcd
1
     % Similarly for arithmetic ;
     1 plus 2
3
     1 + 2
3
     1 minus 2
-1
     1 - 2
-1

Factorial

% Functional Recursion: ;
fact is recur [ 0 =, 1 first, pass, product, -1 +] % from wikipedia;

% Product of a range: ;
fact is * count;

% Plain recursion: ;
fact is op x {
  if x = 0 then 1 else x * fact (x - 1) endif
};

% While loop: ;
fact is op x {
  prod := 1;
  while x > 0 DO
      prod := prod * x;
      x := x - 1;
  endwhile;
  prod
};