Lili, The Language
Describing and understanding Lili's datatype hierarchy is much easier than doing the same for Common Lisp.
The type relations in Lili are subject to a simple tree-hierarchy:
There is one fact which hurts the tree-character of the type-graph: The pseudo-datatype List has the symbol nil and all
- Every Lili-Expression is an S-Expression
- An S-Expression is either an Atom or a Cons or a Structure or an Exception
- An Atom is either a Symbol or a Number or a Character or a String or a Server
- A Number is either an Integer (64 bit) or a Real (64 bit)
conses as extension. nil itself is the empty list, an atomic symbol and stands for the truth value false.
Symbols roughly correspond to variable names in imperative languages. A symbol is represented by any concatenation
of characters excluding space. Examples for symbols are:
Symbol naming is case-sensitive in Lili.
The value of a symbol is the value it has most recently been bound to in the environment.
Numbers are syntactically represented as they are. Examples for 64-bit Integers are:
Some examples for 64-bit Real Numbers:
Numbers evaluate to themselves. There do not exist any unlimited precision numeric types or a type for complex numbers
until now. At least a complex type will be added in the near future.
Characters are syntactically represented by a "#\" followed by the character to encode. Examples are:
Characters evaluate to themselves.