The Philosophy of Andl

The philosophy of the Andl language includes the following considerations.

  1. Consistent use of syntax. Things that do similar things should look similar, and vice versa.
  2. Functional in style (not procedural or OO). A language of expressions with (almost) no side-effects, which can support either lazy or eager evaluation. Everything that looks like a value could actually be an expression.
  3. Lexical scoping. Predefined->catalog(s)->argument(s)->current tuple(s)->local. No scope resolution operators, just renaming and aliases. Scoping reads left-to-right, consistent with infix notation.
  4. Few or no reserved words. System library functions have names, but can always be overridden by user definitions.
  5. Not too many arcane symbols. They just take too much explaining.
  6. Lexical: any legal characters are permitted in an identifier and any legal characters can be used to construct a literal character string (but control characters are not recognised). Strings concatenate. Special quoting conventions for identifiers, Unicode strings, time literals.
  7. Types: the native abstract types are logical, number, character, time and binary. All SQL types are accepted, but are converted accordingly.
  8. The compiler is hand-coded LL(1+), recursive descent, which limits certain kinds of syntax. Shouldn’t be a problem in practice. The grammar is quite small.

Leave a Comment

Filed under Uncategorised

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.