Welcome to amphipoLISP
amphipoLISP is a free LISP implementation based on Common Lisp. It is implemented in Java and features an interpreter (and in future a compiler which will compile to Java bytecode).
Why another LISP implementation and why Java?
Free (Common) LISP implementations suffer from several things in general:
- Many different dialects which are only little compatible (amphipoLISP won't help here, though Common LISP conformance is planned)
- Missing tools, addons and libraries which work on every platform
- No single deployment mechanism which works for every platform
- High barriers to change from running code to a LISP implementation
amphipoLISP integrates seamlessly with Java. It is possible to call LISP code from Java, and it is even easier to call java code from LISP. So you get the dynamic and untyped nature of programming from LISP with the whole framework supplied by Java. There are tons of free libraries for Java (though MUCH free software is really badly designed especially when written in Java), you can use them from LISP as easy as from Java. Examples are the use of JUnit tests for LISP code which was used when writing amphipoLISP and the upcoming SWT GUI library. One of the next features will be the deployment of amphipoLISP programs in jar files and making the use of Java Web Start to get your software running.
Important differences to other lisp dialects
- functions have no own namespace thus
(defun bla () (+ 5 3))
is more or less equivalent to(setf bla (lambda () (+ 5 3))) ; on top-level
- thus there is no #' or function because lambda is function which returns a function object
- no cons cells yet (funny isn't it ;) )
- no packages and no keyword symbols
- no 'advanced' lambda lists
Currently featured builtin LISP functions and special forms
- atom
- car
- cdr
- list
- cond
- flet
- lambda
- funcall
- abs,+,-,*,/,<
- eval
- progn
- defun
- let
- labels
- macrolet
- defmacro
- macroexpand
- listp
- floatp
- integerp
- stringp
- functionp
- macrop
- symbol-name
- string=
- eq
- append
- do
- setf
- eval-from-stream
- quote
- java-call
- java-new
- java-get-static
- java-cast
- java-implement
