False Article Index for
False
Articles about
False
Website Links For
False
 

Information About

False




FALSE is notably more tractable than most esoteric programming languages. The fundamental operations that it provides are reasonably sensible, and there is no gratuitous complexity. In these respects it stands in stark contrast to the behemoths Intercal and Malbolge . The difficulty of programming in FALSE comes mostly from the low level nature of the language, which has the feel of a Forth-like assembly language. The remainder of the language's awkwardness comes from the concise punctuation-based syntax, which many people find more difficult than a more conventional word-based syntax.

The language features basic arithmetic and logical operations, variables, Subroutines as Lambda Calculus expressions, Control Flow statements, and Input/output operations. FALSE operations are done using a Stack . Its structure is largely based on the Forth Programming Language .


THE STACK

Everything in the language is defined by how it operates on the stack. When a value is encountered, it is simply pushed onto the stack; when an operator is encountered, a number of operands are popped from the stack, the operation is performed on them, and some number of results are pushed back onto the stack. For example, in the expression 1 3_+:
: 1 : pushes the integer 1 onto the stack
: 3 : pushes the integer 3 onto the stack
: _ : pops 3 from the stack, negates it, and pushes -3
: + : pops 1 and -3 from the stack and pushes their Sum , -2.
Subroutines also act on the stack - this is the way that they are given arguments and return values; they see the same stack as the rest of the program.


DATA TYPES

Data types that can be used in the program are ASCII characters (which are preceded by ' (single-quote)), 32-bit Integer s, binary values (0 representing false; -1 representing true), and lambda calculus expressions. These can be used on the stack or stored in Variables .


BASIC OPERATORS

FALSE supports Binary and Unary Operation s in Reverse Polish Notation , as well as operations that act on the stack alone.

  • , and / (binary operators, which pop two elements from the stack and push (respectively) their Sum , Difference , Product , or Quotient ) and the _ (underscore) is unary negation (which pops one element and pushes its Negation ).