PicoLisp
Из Википедии, свободной энциклопедии
Из Википедии, свободной энциклопедии
PicoLisp — минималистичный свободный диалект языка программирования Лисп, рассчитанный на использование на Linux и других POSIX-системах.
PicoLisp | |
---|---|
Класс языка | язык программирования |
Появился в | 1988 |
Автор | Александр Бюргер |
Выпуск | |
Система типов | динамическая |
Лицензия | лицензия MIT |
Сайт | picolisp.com |
Платформа | POSIX |
Автором PicoLisp является немецкий разработчик Александр Бюргер (Alexander Burger). Предшественником PicoLisp был «8kLisp», созданный в 1986—1987 годах тем же автором для компьютеров под управлением операционной системы CP/M; основные идеи были заложены уже тогда.
Первая версия интерпретатора PicoLisp была создана для компьютеров Macintosh в конце 1980-х годов. Первая коммерческая разработка на PicoLisp, система обработки изображений и подготовки макета для печати, работавшая на Mac II, была выполнена в 1988 году[2].
В 2009 году появилась 64-битная версия, написанная на «общем машинном коде», который с помощью PicoLisp переводится в конкретный код целевой платформы.
В 2010 году была выпущена Java-версия «Ersatz Picolisp»[3].
lambda
, традиционной для Лисп-систем (в том числе для Common Lisp и Emacs Lisp) — она потеряла необходимость благодаря изменению функции quote
, которая в PicoLisp возвращает неизменными все свои аргументы, а не только первую ячейку[4]. Универсальный механизм описания функций с поддержкой управления вычислением параметров дал возможность отказаться и от специального синтаксиса для макросов и функциональных значений; все они могут быть адекватно представлены общим синтаксисом описания функций. Благодаря интерпретации функции свободны от многих ограничений и могут эффективно работать с данными произвольных типов обрабатывать произвольное количество параметров. В языке нет даже поддержки массивов, единственным неатомарным типом данных является список.Код, кодирующий информацию в Base58[7]:
(setq *B58Alpha
(chop "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz") )
(de hex2L (H)
(make
(for (L (chop H) L (cddr L))
(link (hex (pack (car L) (cadr L)))) ) ) )
(de b58enc (Lst)
(let
(P 1
Z 0
A
(sum
'((X)
(* X (swap 'P (>> -8 P))) )
(reverse Lst) ) )
(for L Lst
(T (n0 L))
(inc 'Z) )
(pack
(need Z "1")
(make
(while (gt0 A)
(yoke
(prog1
(get *B58Alpha (inc (% A 58)))
(setq A (/ A 58)) ) ) ) ) ) ) )
На официальном сайте языка представлен ряд примеров законченных приложений, среди них веб-приложение со встроенной базой данных, полнофункциональный консольный текстовый редактор (менее 1 тыс. строк кода), IRC-клиент.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.