ISWIM

ISWIM (от англ. If you See What I Mean — если вы понимаете, о чём я) — теоретический язык программирования, описанный Питером Лэндином (англ. Peter Landin) в 1966 году[1] как императивный язык с функциональным ядром на основе λ-исчисления с синтаксическим сахаром. Основная особенность — применение для изменяемого состояния, присваивания и механизма управления J-оператора, позволяющего захватывать текущее продолжение. Благодаря λ-исчислению в языке есть функции высшего порядка и переменные с лексической областью видимости.

ISWIM
Класс языка строгая, функциональная
Появился в 1966
Автор Питер Лэндин
Система типов динамическая
Испытал влияние Алгол 60, Лисп
Повлиял на SASL, ML, Miranda, Haskell, Clean, Lucid

Операционная семантика ISWIM определяется SECD-машиной (англ. stack, environment, code, dump), и использует вызов по значению, то есть строгое вычисление. Код на языке должен был выглядеть наиболее похожим на математическую нотацию, вследствие чего Лэндин убрал точку с запятой между утверждениями и блоки begin — end, типичные для алголоподобных языков, и заменил их областью видимости, зависимой от выравнивания.

Специфической особенностью в нотации ISWIM является использование where-предложений. Программа на ISWIM — это единственное выражение, ограниченное утверждениями where (вспомогательные определения, включающие в себя отношения между переменными), условными выражениями и определениями функций. ISWIM (вместе с CPL) — первый язык, использующий такую нотацию.

Примечательной семантической чертой была возможность определять новые типы данных, как (потенциально рекурсивную) сумму произведений; для этого использовалось ёмкое описание, довольно сходное с естественными языками, по сути равное алгебраическим типам данных в современных функциональных языках. Переменные в языке не имели явных объявлений типа, это даёт основание считать, что Лэндин планировал язык с динамической типизацией (как Лисп, а не Алгол); возможно, предполагая и некоторую форму вывода типов.

ISWIM так и не был реализован программно, хотя языки PAL Арта Эвана (Art Evan) и Gedanken Джона Рейнолда (John Reynold) использовали большинство ключевых решений языка Лэндина, включая операции передачи управления. Оба эти языка использовали динамическую типизацию. ML Милнера можно считать эквивалентным ISWIM без J-оператора, но обогащённым выводом типов.

Другая линия продолжателей ISWIM избавилась от императивных особенностей — присваивания и J-оператора, — развиваясь как чисто функциональные языки, впоследствии с переключением на ленивые вычисления. Этим путём пошли SASL, Miranda и Haskell.

Примечания

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.