~duncan-bayne/zlisp

A simple Scheme-like Lisp interpreter targeting the Amstrad CPC (and thus indirectly the Z80 CPU).
Looks like sourcehut Markdown doesn't do tables
Convert orgmode README to Markdown
Don't use unions

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~duncan-bayne/zlisp
read/write
git@git.sr.ht:~duncan-bayne/zlisp

You can also use your local clone with git send-email.

#zlisp

#intro

zlisp is a lightweight, Scheme-like Lisp interpreter for the Amstrad CPC series.

#status

zlisp is still pre-release.

#language

zlisp is a simple, garbage-collected Lisp. This describes v0.1 - sufficient functionality to build a functioning REPL, and little else.

#data types

#list

A list is zero or more items that may be lists, or atoms.

(name (Duncan Bayne) address (Melbourne Victoria))

#atoms

An atom is a single datum, which may stand alone (for example, as the result of an arithmetic operation), or be part of a list.

#symbol

Symbols are identifiers, unique to a particular context. They always start with an alphabet character, and are case-sensitive in nature.

bob

#built-in functions

| function | description                                                                                                                                                                          |
|----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| +        | Adds zero or more numbers to the first number in a list, and returns the total as a number.                                                                                          |
| def      | Associates a symbol with a value; the value may be a list, or any type of atom.                                                                                                      |
| eval     | Evaluates a Lisp list, or atom, and returns either a list, an atom, or nil.                                                                                                          |
| print    | Prints its arguments to the screen.  Returns nil.                                                                                                                                    |
| read     | Reads an argument from the keyboard, echoing it to the screen, ending the read when ENTER is pressed.  Parses the entered value as Lisp, and returns either a list, an atom, or nil. |

#licence

zlisp is licensed under the GNU Lesser Public License 3.0.

#why the LGPL?

The GPL is specifically designed to reduce the usefulness of GPL-licensed code to closed-source, proprietary software. The BSD license (and similar) don't mandate code-sharing if the BSD-licensed code is modified by licensees. The LGPL achieves the best of both worlds: an LGPL-licensed library can be incorporated within closed-source proprietary code, and yet those using an LGPL-licensed library are required to release source code to that library if they change it.