Wouter's FALSE 1.2.CF

Version of implementation Wouter's FALSE of programming language FALSE

Version 1.2 of the author’s interpreter of FALSE, fixed to be compatible with modern C compilers.


Hello, World! - FALSE (357):

A string is equivalent to a command which simply prints it. There’s no way to put the string on the stack, except for as a part of a function.

"Hello, World!"

Factorial - FALSE (358):

This example uses iterative method of factorial calculation. Variables i and f store current number (loop counter) and current factorial value. After the variables are initialized, the loop starts. [i;17=~] defines the continuation condition: as long as i doesn’t equal 17. Loop body follows: i and a string constant are printed, i is incremented, old value of f is printed and new value of f is calculated.

For Wouter’s FALSE 1.2.CF factorial values for 13 and above are calculated with overflow error.

0i: 1f: 
[i; $."! = " 1+$i: f;$.10, *f:]

Fibonacci numbers - FALSE (359):

This example uses iterative method of calculating Fibonacci numbers. Variables a and b store current numbers, variable i is loop counter.

The second loop empties the stack (deletes Fibonacci numbers written there by the first loop). Some interpreters tolerate data left in stack after program completion, but Wouter’s FALSE requires that the stack is empty and throws a runtime error otherwise.

0i: 1a: 1b:
[a; $. ", " $ b; $ a: + b: i;1+i:]


Quadratic equation - FALSE (496):

This example is identical to the one written for Morphett’s FALSE, except that in Wouter’s FALSE end of input is signaled by end of line character, which is used for breaking the loop. Besides, % in the end of the code deletes the last leftover value from the stack.

1_s: ^
[ $$ 96> \123\> & [32-]?
  $$ 64> \91\> & $l: [s;~[32+]? , 0s:]? l;~[1_s: %]?