Skip to content

recursive-madman/lisp

Repository files navigation

This is (as you probably guessed) a Lisp interpreter.

Current language features are as follows:

* Five data types,

  three types of atoms:
    * numbers -- like 1, 2, 3 (i.e. only integers)
    * symbols -- like `foo', `bar', ..
    * strings -- like the infamous "Hello world !"

  two container types:
    * cons cells    -- like (1 2)
    * quoted values -- like 'foo

* Two special forms:

  * lambda -- creates a function
  * cond   -- branches by evaluating conditions

* Exceptions (but no way to catch them)

* An _extensive_ set of builtin functions:

  * as many as four (!) arithmetic integer operations (+, -, *, /)
  * parse  -- parses a string into an expression
  * eval   -- evaluates an expression
  * print  -- prints an expression to stdout, followed by a line break
  * set    -- sets a symbol's value in the current symbol table
  * eq     -- checks if two things are equal
  * cons   -- creates a cons cell
  * car    -- returns the first value of a cons cell
  * cdr    -- returns the second value of a cons cell
  * typeof -- returns the type of a given thing as a symbol, i.e. one
              of: number, symbol, string, cons, quote, function

* An impressive collection of memory leaks (DEPRECATED)

* No tail recursion.

See MANUAL for details.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published