Предложение по усовершенствованию JavaScript

топ 100 блогов lionet11.03.2013 Выдвигаю предложения по усовершенствованию синтаксиса языка JavaScript.

Для примера разберём такую простую конструкцию, как функция, генерирующая замыкания.

function foo(filter, pattern) {
    var f = function(list) { return filter(pattern, list); };
    return f;
};

Конечно, в JavaScript есть опциональные точки с запятыми. Их можно не ставить, если это не приведёт к синтаксическим проблемам. Поэтому предлагаю завершающие точки с запятыми из языка убрать, а в язык добавить правило, что если строка кончается и при этом на строке находится полностью завершённое выражение (то есть, все открывающие скобки уже закрыты), то считаем, что выражение действительно завершено. При этом точки с запятыми становятся не нужны:

function foo(filter, pattern) {
    var f = function(list) { return filter(pattern, list) }
    return f
}

Затем, предлагаю не писать function, это долго. И питоновская lambda — тоже не сахар. А ведь замыкания используются в JavaScript направо и налево! Для упрощения вместо function можно использовать какой-нибудь редко используемый символ. Например, бэкслеш — он используется в программах на JavaScript разве что только в строках и в регулярных выражениях, поэтому конфликтовать ни с чем не должен. В итоге имеем:

function foo(filter, pattern) {
    var f = \(list) { return filter(pattern, list) }
    return f
}

Затем предлагаю не писать return в конце функции. Пусть результат последнего выражения на последней строке функции автоматически возвращается из функции. Во многих языках это есть. Например, в Ruby (читается «руби», а не «раби», кстати). Пусть return используется только для раннего выхода из функции. Ведь это так удобно!

function foo(filter, pattern) {
    var f = \(list) { filter(pattern, list) }
    f
}

Ну и логично, что var f в этом примере больше не требуется:

function foo(filter, pattern) {
    \(list) { filter(pattern, list) }
}

Затем мы видим, что если функция использует один аргумент, то скобки смысла большого не имеют. Да и функции с несколькими аргументами могут обойтись без скобок. Чтобы не возникало обвинений, что в JavaScript скобок больше, чем в Лиспе, уберём их. Запятые тоже не нужны, кстати: всё, что идёт после названия функции, есть её аргументы:

function foo filter pattern {
    \list { filter pattern list }
}


Кстати, мы убрали function() при объявлении анонимного замыкания, но не убрали при объявлении глобальной функции foo. Исправим этот недостаток:

foo filter pattern {
    \list { filter pattern list }
}

Здесь нужно отметить, что вместо зашумляющих код скобок можно воспользоваться Питоньим подходом и внедрить двухмерный синтаксис. Всё, что имеет отступ от начала функции, является телом функции. Скобки поэтому можно не писать:


foo filter pattern
    \list { filter pattern list }

При этом мы видим расхождение в синтаксисе между обычной и анонимной функцией. Но если убрать скобки из анонимной, мы получим синтаксический коллапс — парсер, встретив бэкслэш ("лямбда"-символ) не будет знать, сколько аргументов в анонимной функции, а что является телом. В итоге сделаем так, чтобы был какой-то разделитель. И вставим его в оба места. Например, «=»:

foo filter pattern =
    \list = filter pattern list

Таким образом, в первом приближении мы получим Haskell, с которым уже можно работать дальше.

Оставить комментарий

Архив записей в блогах:
вообще в принципе семейные дела и квартирные разборки - личное дело каждого. Их все равно будут обсуждать, будут перемывать косточки, кричать на каждом углу, кто прав а кто виноват - от этого никуда не деться. Я понимаю, что нормальные люди, которым я нравлюсь или которым я не нравлюсь не ...
Призываю в тред всех диагностов по фотографии. Дано: Некропель астра H с механической коробкой. При скорости более 40 кмч начинается сильный гул спереди. Гул не зависит от положения руля, педалей сцепления, газа и тормоза, рычага переключения МКПП. Т.е просто гудит и все. Довольно сильно ...
Клип на известное русское танго" Ах, эти чёрные глаза". Музыка  Оскара Строка, на слова русского поэта эмигранта Александра Перфильева.  Исполняет  король танго в Японии Yoichi Sugawara. Исполнение Yoichi Sugawara придало  знаменитому романсу особый оттенок ...
Не помню рассказывал или нет эту историю. Но посмотел видео с отельершей  с Анапы и нахлынуло. Сдавали мы квартиру в Анапе через Airbnb . Все было хорошо.Люди писали отзывы, вполне себе благожелательные. Если кому что-то не нравилось- устраняли. Немного не удобно нам было ...
Не могу сообразить, зачем дид, по его собственным словам, ввалил лярды денег в чвк, в то время как для армии полчища бабок под предводительсвом Оленихи, вяжут носки и маскировочные сетки, и чуть ли не кулеметы собирают? Почему не ...