Common Lisp

Article on other languages:

del.icio.us del.icio.us
Digg Digg
Furl Furl
Reddit Reddit
Rojo Rojo
Add to OnlyWire

Common Lisp — промышленный стандарт языка Лисп (ANSI X3.226-1994). Был разработан с целью привести к общему знаменателю множество существовавших на тот момент диалектов Лиспа. Включает в себя объектно-ориентированную подсистему CLOS, развитую систему Lisp макросов, позволяющую вводить в язык новые синтаксические конструкции, использовать техники метапрограммирования и обобщённого программирования.

Большинство современных реализаций Лиспа ориентируются либо на него, либо на альтернативный «академический» диалект лиспа — Scheme.


Содержание

Реализации

Common Lisp отличается от таких языков как C#, Java, Perl, Python тем, что он определяется своим стандартом и не существует его единственной или канонической реализации. Любой желающий может ознакомится со стандартом и создать свою собственную реализацию.

Таблица сравнения основных реализаций[1][2]
Название Поддерживаемые платформы Компиляция Возможности Лицензия
CLISP[3] Windows, Mac, Most *nixes Байт-код GNU GPL
CMUCL[4] Linux, FreeBSD, Solaris, Darwin Байт-код, Native, Block Compilation Общественное достояние с частями под BSD License
ECL[5] Microsoft Windows, most Un*x variants, Mac OSX Байт-код, native via C GNU GPL с частями под другими лицензиями
GCL[6] Windows, Most *nixes Native via C GNU GPL
Clozure CL (бывший OpenMCL)[7] Linux/PPC, Linux/X86-64, Darwin/PPC, Darwin/X86-64, FreeBSD/X86-64 Native LGPL
SBCL Linux, BSD, Solaris, MacOS X (Darwin), Windows (экспериментально) Native Общественное достояние с частями под MIT License и BSD License
ABCL[8] Most *nixes, MacOS X (Darwin), Windows JVM bytecode LGPL
emacs-cl[9] Emacs - Неполная реализация GPL
Allegro Lisp[10] Windows, Unix, Linux, Mac OS X - Бесплатна для некоммерческого использования
LispWorks[11] Windows, Unix, Linux, Mac OS X - Shareware
Corman Lisp[12] Windows - Shareware

Примеры

Пример задания контрольной работы по функциональному программированию: Напишите функцию, которая из данного одноуровневого списка строит список списков его элементов, например, (a b) -> ((a) (b)).

  • Рекурсивный способ:
(defun list-of-lists (x)
  (when x
    (cons (list (first x))
	  (list-of-lists (rest x)))))
  • Итеративный:
(defun list-of-lists (list)
  (mapcar 'list list))
    • Используя loop:
(defun list-of-lists (list)
  (loop for i in list
	collect (list i)))

Примечания

  1. Список основных реализаций Common Lisp
  2. Lisp Implementations
  3. CLISP
  4. CMUCL
  5. Embeddable Common Lisp
  6. GCL
  7. Clozure CL
  8. Armed Bear Common Lisp
  9. Emacs Common Lisp
  10. Allegro Lisp — реализация от Franz Inc.
  11. LispWorks. Разработчик — LispWorks, LLC (ранее Xanalys, Inc.)
  12. Corman Lisp — компактный, слегка сокращённый Common Lisp для Windows.

Ссылки

Документация и учебники


Article keywords: ansi common lisp, common edition hp language lisp second technologies, practical common lisp, common document lisp, clos common guide in lisp object oriented programmer programming, common lisp scheme, amount common community lisp,

This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.