Interested Article - ISWIM

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

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

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

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

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

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

Примечания

  1. P. Landin. // Communications of the ACM . — 1966. 13 декабря 2014 года.
Источник —

Same as ISWIM