Jump to content

PicoLisp

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by AlexanderBurger (talk | contribs) at 10:17, 28 December 2019 (New release). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

PicoLisp
ParadigmsFunctional, procedural, object-oriented, declarative, reflective, meta
FamilyLisp
Designed byAlexander Burger
First appeared1988; 36 years ago (1988)
Stable release
19.12 / 28 December 2019; 4 years ago (2019-12-28)
Typing disciplineduck, dynamic, strong
Implementation languageC, assembly, PicoLisp
PlatformIA-32, x86-64, Arm64
OSPOSIX
LicenseMIT
Filename extensions.l
Websitepicolisp.com
Dialects
Ersatz PicoLisp, miniPicoLisp[1]

PicoLisp is a programming language, a dialect of the language Lisp. It runs on operating systems including Linux and others that are Portable Operating System Interface (POSIX) compliant. Its most prominent features are simplicity and minimalism. It is built on one internal data type: a cell. On the language level, a 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.[2] It is free and open-source software released under an MIT License (X11).

Features

Functions can 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 because the quote function is changed to return all its arguments unevaluated, not only the car of the first.[3]

A special feature is the intrinsic create, read, update, and delete (CRUD) functioning. Persistent symbols are first-class citizens (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.

Other features include: Prolog engine, database engine and database queries, distributed databases, inlining of C language functions and native C function calls, child process management, interprocess communication, browser graphical user interface (GUI), and internationalization and localization.

History

In the 1980s, PicoLisp began development on the Macintosh, and was used in commercial application[which?] development since then.[citation needed] It was ported to DOS and SCO Unix. Since 1993, it was used mainly on Linux. In the mid-1990s, database functions were added.

The first versions were written in a mix of C and assembly language. In 1999, a first rewrite from scratch was done, fully in C. In 2002, that version was released under a GNU General Public License (GNU GPL). In 2010, it changed to an MIT/X11 license.

In 2009, the 64-bit version was released, another rewrite, this time written in generic assembly, which in turn is implemented in PicoLisp. This version adds support for coroutines.

In December 2010, a Java version named Ersatz PicoLisp was released.[4]

In September 2014, Burger announced the PilMCU project on the PicoLisp development listserv, an effort with George Orais to implement PicoLisp in hardware directly.[5]

In the summer of 2016, development of PilBox ("PicoLisp Box") – a generic Android app allowing to write apps in pure PicoLisp – was started. It is still being developed and maintained.

1958 1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
 LISP 1, 1.5, LISP 2(abandoned)
 Maclisp
 Interlisp
 MDL
 Lisp Machine Lisp
 Scheme  R5RS  R6RS  R7RS small
 NIL
 ZIL (Zork Implementation Language)
 Franz Lisp
 Common Lisp  ANSI standard
 Le Lisp
 MIT Scheme
 XLISP
 T
 Chez Scheme
 Emacs Lisp
 AutoLISP
 PicoLisp
 Gambit
 EuLisp
 ISLISP
 OpenLisp
 PLT Scheme  Racket
 newLISP
 GNU Guile
 Visual LISP
 Clojure
 Arc
 LFE
 Hy
 Chialisp

References

  1. ^ "PicoLisp Download". Software Lab. Retrieved 18 November 2018.
  2. ^ Burger, Alexander. "Internal structures". Software Lab. Retrieved 18 November 2018.
  3. ^ "Even small details make a difference!".
  4. ^ Burger, Alexander (8 May 2013). "Ersatz PicoLisp". Software Lab.
  5. ^ "Announce: PicoLisp in Hardware".

External links