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

Mar 11, 2013 07:42

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

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

function foo(filter, pattern) {
var f = function(list) { return filter(pattern, list); };
return f;
};Конечно, в JavaScript есть опциональные точки с запятыми. Их можно не ставить, ( Read more... )

fp

Leave a comment

p1r4nh4 March 11 2013, 15:56:51 UTC
А как различить "foo filter pattern" и "filter pattern list"? По =? Это не слишком двусмысленно?

Reply

lionet March 11 2013, 15:58:00 UTC
А зачем их различать? foo и filter - это функции. "filter pattern" и "pattern list" - это аргументы к функциям foo и filter, соответственно.

Reply

p1r4nh4 March 11 2013, 15:59:10 UTC
Эм, "foo" - это ж имя новой функции, а не еë вызов. А "filter" - вызов.

Это я про последний пример, если что.

Reply

lionet March 11 2013, 16:00:51 UTC
Ну так новые функции создаются на внешнем уровне (с нулевого отступа).

Reply

p1r4nh4 March 11 2013, 16:04:45 UTC
Ну т.е. отменить тогда джаваскриптовое

function x(y) {
function q(w) {
return w + 1;
}
return q(y);
}

?

Reply

lionet March 11 2013, 16:06:30 UTC

x y =
(\w = w + 1)(y)

Reply

p1r4nh4 March 11 2013, 16:07:45 UTC
Ну это-то понятно. :)

Reply

lionet March 11 2013, 16:23:05 UTC
Ну тогда так:

x y =
let q w = w + 1
q y

Это тоже консистентно с OCaml или Haskell.

Reply

p1r4nh4 March 11 2013, 16:24:12 UTC
Окей, почему не "let x y =", чтоб всë одинаково было?

Впрочем, это не сильно важно.

Reply

lionet March 11 2013, 16:25:42 UTC
Плюс один за единообразие. Кроме того, сейчас в JS появился let и так, и поэтому это будет «в струе», так сказать:

let x y =
let c = 1
let q w = w + c
q y

Reply

blackyblack March 11 2013, 16:28:17 UTC
Мне всё этот let грёбаный бейсиком отдаёт. Почему-то в эрланге нет никаких летов и всё хорошо.

Reply

lionet March 11 2013, 16:34:18 UTC
Бейсик - это DIM и LET, а не let. let - это уже из традиций #FP, то есть из #ML, то есть из Haskell, OCaml.

А в эрланге fun() -> ... end, а вечный паскалевский end тебя не смущает?

Reply

blackyblack March 11 2013, 16:39:56 UTC
fun() -> end можно вытащить же в отдельную функцию. Вот if -> end да, паскалем как-то отдаёт.

Reply

lionet March 11 2013, 16:41:04 UTC
Ну так и тут можно вытащить в отдельную функцию. А для внутренних переменных и в JS есть let; так что это уже есть, ничего придумывать не надо.

Reply

p1r4nh4 March 11 2013, 16:42:36 UTC
Самая херня там это запятая и точка с запятой! Вот что действительно бесит. :)

Reply


Leave a comment

Up