PicoLisp
| |
Paradigm | functional, procedural, object-oriented, declarative, reflective, meta |
---|---|
Designed by | Alexander Burger |
First appeared | 1988 |
Stable release |
18.9.26
/ September 26, 2018 |
Typing discipline | duck, dynamic, strong |
Platform | POSIX |
License | MIT |
Filename extensions | .l |
Website |
picolisp |
PicoLisp is an open source Lisp dialect. It runs on Linux and other POSIX-compliant systems. Its most prominent features are simplicity and minimalism. It is built on top of a single internal data type (cell). On the language level the programmer can use three different data types (numbers, symbols, and lists) being represented by cells and differentiated by bits at the end of the cell.[1]
Features
Functions are free from the restrictions that would be imposed by a compiler, and can so accept arbitrary types and numbers of arguments. Macros are needed only in rare cases and are implemented using the quote function. PicoLisp does not include Lisp's lambda function. This is caused by the fact that the quote function is changed to return all its arguments unevaluated, not only the car of the first.[2]
A special feature is the intrinsic CRUD functionality. Persistent symbols are first-class objects, they are loaded from database files automatically when accessed, and written back when modified. Applications are written using a class hierarchy of entities and relations.
Additional features include: Prolog engine and database queries, distributed databases, inlining of C language functions and native C function calls, child process management, interprocess communication, browser GUI, and internationalization.
History
Originally developed on the Macintosh in the 1980s, and used in commercial application development since then. It was ported to MS-DOS and SCO Unix, and used mainly on Linux since 1993. Database functionality was added in the mid-1990s.
While the first versions were written in a mix of C and assembly language, a first rewrite from scratch was done in 1999 completely in C. That version was released 2002 under the GNU GPL license, and changed to a MIT/X11 license in 2010.
In 2009 the 64-bit version was released, another rewrite, this time written in a generic assembler which in turn is implemented in PicoLisp. This version adds support for coroutines.
A Java version called "Ersatz Picolisp" was released in December 2010.[3]
In September 2014, Burger announced the PilMCU project on the PicoLisp development listserv, an effort with George Orais to implement PicoLisp directly in hardware.[4]
References
- ↑ Burger, Alexander. "Internal structures".
- ↑ "Even small details make a difference!".
- ↑ Burger, Alexander (8 May 2013). "Ersatz PicoLisp".
- ↑ "Announce: PicoLisp in Hardware".
External links
- Official site
- Paper A Radical Approach to Application Development (PDF)
- #picolisp connect IRC channel
- Mailing list archive
- John Fremlin's blog PicoLisp takes the performance crown?
- First Glance
- c't Magazine Database contest results (in German)
- Macropis, a web development framework in Picolisp
- MIT-licensed PicoLisp libraries (bcrypt, json, nanomsg, unit testing, https)
1955 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2018 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Lisp 1.5 | Lisp 1.5 | ||||||||||||||||||||
Maclisp | Maclisp | ||||||||||||||||||||
Interlisp | Interlisp | ||||||||||||||||||||
ZetaLisp | Lisp Machine Lisp | ||||||||||||||||||||
Scheme | Scheme | ||||||||||||||||||||
NIL | NIL | ||||||||||||||||||||
Common Lisp | Common Lisp | ||||||||||||||||||||
LeLisp | Le_Lisp | ||||||||||||||||||||
T | T | ||||||||||||||||||||
Emacs Lisp | Emacs Lisp | ||||||||||||||||||||
AutoLISP | AutoLISP | ||||||||||||||||||||
OpenLisp | OpenLisp | ||||||||||||||||||||
PicoLisp | PicoLisp | ||||||||||||||||||||
EuLisp | EuLisp | ||||||||||||||||||||
ISLISP | ISLISP | ||||||||||||||||||||
newLISP | newLISP | ||||||||||||||||||||
Racket | Racket | ||||||||||||||||||||
Guile | GNU Guile | ||||||||||||||||||||
Visual LISP | Visual LISP | ||||||||||||||||||||
Clojure | Clojure | ||||||||||||||||||||
Arc | Arc | ||||||||||||||||||||
LFE | LFE | ||||||||||||||||||||
Hy | Hy |