Skip to content

Latest commit

 

History

History
executable file
·
40 lines (28 loc) · 2.13 KB

README.md

File metadata and controls

executable file
·
40 lines (28 loc) · 2.13 KB

This is Core module of project Lambdulus

Documentation of some features (will be growing with time)

SLI - Single Letter Identifiers

Lambdulus allows shorthand syntax for quicker typing. It looks for example like this: (λ x y z . y z x).

This is known as MultiLambda. This convention is purely syntactic sugar. It is simplification for: (λ x . (λ y . (λ z . (y z x) ))).

Hovewer this example can be written in even shorter way. With SLI enabled we can write it like: (λxyz.yzx) It means the same thing - this whitespace-omitting practice originated from the times teachers and students of PPA used to write on white-boards. On the white-board there is no simple way to properly write whitespaces - so we used to omit them altogether.

SLI - Rules:

  • identifier in SLI mode can be :

    • single alphabetic character like: a or b in following expression: + a b
    • it can also be single character followed be single numeric literal like c2
    • it can be sequence of alphabetic characters - like abc then it is understood like a b c
    • it can also be sequence of alphanumeric characters - in that case each numeric character must be preceeded by at least one alphabetic character and there must not be more than one numeric character standing immediately next to other - example of valid expression: A1BB2C3DDD - it is understood as: A1 B B2 C3 D D D

    Hovewer, Lambdulus also implements Macros - known abstractions. They are typically named with all upper-case letters. Like: ZERO or PREV and so on. These are also available in SLI mode.

    To succesfully use multi-char Macros in SLI mode they must be followed by whitespace. For example: ZERO 0 is valid SLI expression utilising Macro ZERO.

    On the other hand expression ZEROZERO 0 is not understood as ZERO ZERO 0 but as Z E R O Z E R O 0.

    Same goes for expressions as ZERO1ZERO2 0. It is understood as Z E R O1 Z E R O2 0.

    Finally expressions as ZERO12ZERO 0 would be understood as Z E R O12 Z E R O 0 - which is syntacticaly incorrect - because of two numeric characters following letter O. This will result in syntax error.