Jump to content

КОЛЛ

КОЛЛ
Парадигма процедурный , императивный , структурированный
Разработано Воган Пратт
Впервые появился 1973
Под влиянием
АЛГОЛ , ФОРТРАН , MLisp

КОЛЛ [1] [2] (произносится как «see goll» ) — альтернативный синтаксис с расширяемой алгебраической нотацией для языка программирования Lisp . Он был разработан для MACLISP Воаном Праттом и впоследствии портирован на Common Lisp . [3]

Нотация CGOL — это традиционная инфиксная нотация в стиле ALGOL Лиспа с одинаковыми круглыми скобками , а не традиционный синтаксис префиксной нотации . Синтаксический анализатор CGOL основан на конструкции Пратта для сверху вниз приоритета операторов анализа . [4] [5] иногда неофициально называемый « парсером Пратта ».

Семантически CGOL — это, по сути, просто Common Lisp с некоторой дополнительной поддержкой чтения и печати.

CGOL можно рассматривать как более успешное воплощение некоторых основных идей, лежащих в основе более раннего проекта LISP 2 . Lisp 2 был преемником LISP 1.5 , целью которого было предоставление синтаксиса ALGOL. От LISP 2 отказались, тогда как сегодня можно использовать кодовую базу CGOL. Это связано с тем, что в отличие от LISP 2, CGOL реализован в виде переносимых функций и макросов, написанных на Lisp, и не требует никаких изменений в реализации Lisp хоста.

Синтаксис

[ редактировать ]

Для многих часто используемых операций Common Lisp доступны специальные обозначения. Например, можно написать процедуру умножения матриц следующим образом:

 for i in 1 to n do
   for k in 1 to n do
     (ac := 0;
      for j in 1 to n do
         ac := ac + a(i,j)*b(j,k);
      c(i,k) := ac)

CGOL имеет инфикс . операция (ссылаясь на Common Lisp's cons функция) и инфикс @ операция (ссылаясь на Common Lisp's append функция):

a.(b@c) = (a.b)@c

Предыдущий пример соответствует этому тексту в собственном Common Lisp:

(EQUAL (CONS A (APPEND B C)) (APPEND (CONS A B) C))

CGOL использует of для чтения и установки свойств:

'father' of x := 'brother' of relative of y

Предыдущий пример соответствует этому тексту в собственном Common Lisp:

(PUTPROP X (GET (GET Y RELATIVE) 'BROTHER) 'FATHER)

Это иллюстрирует, как CGOL записывает функцию двух аргументов:

\x,y; 1/sqrt(x**2 + y**2)

Предыдущий пример соответствует этому тексту в собственном Common Lisp:

(LAMBDA (X Y) (QUOTIENT 1 (SQRT (PLUS (EXPT X 2) (EXPT Y 2)))))

Синтаксис CGOL управляется данными, поэтому его можно изменять и расширять.

Статус и исходный код

[ редактировать ]

Известно, что CGOL работает над Armed Bear Common Lisp . [6]

Исходный код CGOL и некоторые текстовые файлы, содержащие его обсуждения, доступны бесплатно в Университета Карнеги-Меллона . репозитории искусственного интеллекта [3]

  1. ^ Пратт, Воан Р. CGOL: альтернативное внешнее представление для пользователей LISP. Рабочий документ AI 121. Лаборатория искусственного интеллекта Массачусетского технологического института (Кембридж, Массачусетс). 1976.
  2. ^ Пратт, Воан Р. CGOL - алгебраическая нотация для пользователей MACLISP. 27 января 1977 года.
  3. ^ Перейти обратно: а б CGOL: язык, похожий на Алгол, который компилируется в Common Lisp.
  4. ^ Пратт, Воган Р. Приоритет операторов сверху вниз. Материалы симпозиума ACM по принципам языков программирования . 1973. стр. 41–51.
  5. ^ Ван Де Вантер, Майкл Л. Формализация и доказательство корректности языковой системы CGOL (магистерская диссертация). Технический отчет Лаборатории компьютерных наук Массачусетского технологического института MIT-LCS-TR-147 (Кембридж, Массачусетс). 1975.
  6. ^ CGOL о ABCL Разработка блога о реализации Armed Bear Common Lisp .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ce71d25a1192ac78d7d9b4aa57216f19__1714414680
URL1:https://arc.ask3.ru/arc/aa/ce/19/ce71d25a1192ac78d7d9b4aa57216f19.html
Заголовок, (Title) документа по адресу, URL1:
CGOL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)