Common Lisp


Common Lisp (сокращённо — CL) — диалект языка программирования Лисп, стандартизированный ANSI[1]. Был разработан с целью объединения разрозненных на момент начала 1980-х годов диалектов Лиспа; доступно несколько реализаций Common Lisp, как коммерческих, так и свободно распространяемых.

Стандарт фиксирует язык как мультипарадигменный: поддерживается комбинация процедурного, функционального и объектно-ориентированного программирования. В частности, объектно-ориентированное программирование обеспечивается входящей в язык системой CLOS; а система лисп-макросов позволяет вводить в язык новые синтаксические конструкции, использовать техники метапрограммирования и обобщённого программирования.

Разработка координировалась посредством электронной почты, первоначальная структура языка существенно переработана по мере продвижения. Первый обзорный материал по разработке стандарта представлен Гаем Льюисом Стилом на Симпозиуме ACM по Лиспу и функциональному программированию в 1982 году, а первый документ по языку опубликован в 1984 году («Язык Common Lisp, первая редакция»). Вторая редакция, выпущенная в 1990 году, включала много изменений, произведённых ANSI над языком в процессе стандартизации. Конечную же редакцию стандарта опубликовали в 1994 году.

По состоянию на 2018 год никаких обновлений стандарта выпущено не было, а различные расширения и улучшения для Common Lisp (такие, как поддержка Юникода, параллелизм, основанные на CLOS ввод-вывод) обеспечиваются реализацией и библиотеками (многие доступны посредством Quicklisp).

Common Lisp использует S-выражения для обозначения как кода, так и данных. Вызовы функций и макросов являются списками, где первый элемент, или голова списка, является именем функции, а остальные, — «хвост» списка, — аргументами.

Числовые типы включают в себя целые, дроби, числа с плавающей запятой и комплексные числа[2]. Common Lisp даёт возможность использовать большие числа для представления любых величин с большей точностью.