На другом языке, поскольку Algol является наиболее распространенным, а APL, возможно, является наиболее очевидным, создание пользовательских абстракций, которые неотличимы от функций и форм, с которыми поставляется язык, является совершенно особенным.
Таким образом, я думаю, что вы неправильно прочитали текст. Представьте, что вы хотите создать числовую библиотеку, которая расширяет языковую концепцию чисел, возможно, интервалами. Вы создаете библиотеку и определяете способ создания интервалов и заставляете свою библиотеку работать по числу и интервалам. Если бы у вас была библиотека, которая занималась математикой, вы могли бы просто использовать свой класс в библиотеке, и он работал бы из коробки с интервалами, учитывая, что вы определили все необходимые функции. Сейчас в большинстве языков Algol +
, /
, ... не являются функциями, а являются операторами, и у них есть специальные правила, поэтому, хотя C ++ сделал перегрузку операторов, не во многих других языках есть поддержка для создания +
, который работает с вашим новый тип интервала. Решением будут функции, которые явно не будут выглядеть как собственные примитивы языка, поскольку они являются операторами. В APL у всех примитивов есть специальные символы, а у всех определенных пользователем нет, поэтому все пользовательские абстракции легко увидеть, поскольку они не являются причудливыми символами.
Сегодня мы довольно часто выпускаем новые версии Java, JavaScript, C ++ и т. Д. Это необходимо, поскольку у этих языков нет способа абстрагироваться от собственного синтаксиса в языке. В JavaScript сегодня есть babel, который в основном дает вам метод переноса одного синтаксиса в другой, но ему еще предстоит реализовать функцию, которая позволяет вам делать это из языка. Это то, что было в Лиспе на протяжении нескольких десятилетий, и современные языки получают функции для бодрости, но некоторые все еще редки.
Я создал язык для шуток, у которого было такое же отсутствие цифр, как и для первого шурупа, так как он меня не интересовал. Я также должен был сделать 99 бутылок пива на этом языке. Я использовал списки и символы и создал и определил +
, -
, zerop
. и когда вы смотрите на реальную программу, вы не видите, что ей не хватает цифр.
Мне нравится выступление Гая Л. Стила из 98 о расширении языков программирования . Он является первоначальным автором Scheme и принимал участие во многих языках, включая Java и Common Lisp.