CLOS

Стандартная группировка методов в ANSI Common Lisp

CLOS (англ. Common Lisp Object System — «объектная система Common Lisp’а», произносится как англ. see-loss[1]) — система объектно-ориентированного программирования, являющаяся частью Common Lisp — стандарта языка Лисп. Кроме того, её встраивают в другие диалекты, такие как EuLisp или Emacs Lisp[2]. Вначале предложенная как дополнение, CLOS была принята в качестве части стандарта ANSI CommonLisp.

CLOS имеет следующие особенности:

  • Множественная диспетчеризация (то есть вызываемый метод определяется всеми аргументами, а не только первым), или «мультиметоды».
  • Поэтому методы не определяются внутри классов. Они концептуально группируются в «обобщённые функции».
  • CLOS не обеспечивает сокрытия. Сокрытие обеспечивается другой частью Common Lisp — пакетами.
  • Наследование может приводить к тому, что методы суперклассов комбинируются различными способами по выбору программиста, а не только простым переопределением.
  • CLOS является динамическим, то есть не только содержимое, но и структура объектов может меняться во время работы программы. CLOS поддерживает изменение структуры класса на лету (даже если экземпляры данного класса уже существуют), равно как и смену класса данного экземпляра с помощью метода CHANGE-CLASS.
  • Множественное наследование.

Большинство реализаций Common Lisp поддерживают метаобъектный протокол, описанный в книге «The Art of the Metaobject Protocol»[3], но не включённый в стандарт.

Примечания

  1. Peter Norvig. «Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp»
  2. «CLOS это стандарт. Многие поставщики предлагают CLOS. CLOS (или его части) используется для добавления объектно-ориентированных возможностей в другие диалекты Лиспа, такие как EuLisp или Emacs Lisp.» стр. 110 Вейча
  3. Часть книги, непосредственно описывающая MetaObject Protocol (англ.). Дата обращения: 16 июня 2023. Архивировано из оригинала 21 января 2013 года.

Литература

  • Handbook of Programming Languages (HPL), Volume 4: Functional and Logic Programming Languages (англ.) / Editor Peter H. Salus. — Macmillan Technical Publishing, 1998. — 250 p. — ISBN 1-57870-011-6., Jim Veitch, on CLOS, P. 107—158
Перейти к шаблону «Common Lisp»
Common Lisp
Реализации
  • Allegro CL
  • ABCL[англ.]
  • CLforJava
  • CLISP
  • Clozure CL[англ.]
  • CMUCL
  • Corman Common Lisp
  • ECL
  • GCL
  • LispWork[англ.]
  • Macintosh Common Lisp
  • Movitz
  • Poplog[англ.]
  • Scieneer CL
  • SBCL
  • Symbolics Common Lisp[англ.]
Программное обеспечение
Библиотеки
  • CLSQL[англ.]
  • CL-HTTP[англ.]
  • CL-PPCRE
  • CLX[англ.]
  • Ironclad
  • SymbolicWeb
  • UnCommon Web
  • Weblocks
  • Hunchentoot
  • AllegroCache
  • ASDF[англ.]
  • CLiki[англ.]
  • CLIM[англ.]
Приложения
  • Clfswm
  • Common Music
  • Common Lisp Music[англ.]
  • Common Music Notation[англ.]
  • ICAD
  • InspireData
  • PrimeTrader
  • Mirai[англ.]
  • Maxima
  • OpenMusic
  • PWGL
  • Stumpwm
  • SiteGrinder
  • OASIS
  • AutoPrice
Среды разработки
Публикации
  • Common Lisp the Language[англ.]
  • Paradigms of AI Programming[англ.]
  • The Art of the Metaobject Protocol[англ.]
  • On Lisp[англ.]
  • Practical Common Lisp[англ.]
  • Object-Oriented Programming in Common Lisp[англ.]
Design committee
  • X3J13[англ.]
  • Гай Стил[англ.]
Другое
Перейти к шаблону «Лисп»
Характеристики
Объектные системы systems
  • Common Lisp Object System (CLOS)
  • CommonLoops
  • Flavors
Реализации
Стандарты
Common
Lisp
Scheme
ISLISP
Нестандартные
Лого
Операционная система
  • Common Lisp Interface Manager, McCLIM
  • Genera
  • Scsh
  • Аппаратное обеспечение
    Сообщество
    Стандарты
    Образование
    Книги
    • Common Lisp the Language
    • How to Design Programs (HTDP)
    • On Lisp
    Куррикулум
    • ProgramByDesign
    Разработчики
    Люди
    • Категория Категория
    • Категория Категория
    • Список Список