Здравствуйте, Mamut, Вы писали:
L>>Дабы не ходить вокруг да около, давай ты лучше сам расскажешь, чем так хороша поддержка ФП в javascript-е.
M>Стоп. В роли обвинения выступешь ты. Пока что от тебя было: M>- аяяяй, синтаксис (к поддержке ФВП не имеет отношения) M>- аяяяй, нет стандартной библиотеки (к поддержке ФВП не имеет отношения)
Гм. Синткасис и библиотеки не относятся. Что же тогда относится-то?
Здравствуйте, Mamut, Вы писали:
Ц>>>и то, появилось не сразу L>>И что с того, в js аналогов и сейчас нет
M>Есть. Там где надо (в jQuery, например)
уныло там все с этим.
L>>хуже. отвратительный синтаксис лямб приводит к нечитаемому коду. и программист, который заботится о поддерживаемости своего кода, трижды подумает прежде чем станет писать в функциональном стиле на js-е.
M>Странно, миллионы программистов используют ФП в JS и не парятся, а Lloyd трижды думает
M>*ушел писать при помощи насквозь функционального jQuery...*
jQuery исползуют в большинстве своем из-за удобного синтаксиса селекоторов, а не из-за того, что он "функционален". выброси оттуда селекторы и миллионы программистов сразу куда-то испарятся.
L>>>Дабы не ходить вокруг да около, давай ты лучше сам расскажешь, чем так хороша поддержка ФП в javascript-е.
M>>Стоп. В роли обвинения выступешь ты. Пока что от тебя было: M>>- аяяяй, синтаксис (к поддержке ФВП не имеет отношения) M>>- аяяяй, нет стандартной библиотеки (к поддержке ФВП не имеет отношения)
L>Гм. Синткасис и библиотеки не относятся. Что же тогда относится-то?
Для полноценной поддержки ФП языку нужно что? (это вопрос «на засыпку»)
Синтаксис в стиле (x, y) -> return_value? Это все равно, как сказать, что для поддержки ООП обязательно нужнен С-подобный синтаксис.
Стандартная библиотека? Сорри, но только в С++ стандартная библиотека включена в спецификацию языка. От отсутсвия Prelude Haskell не становится менее функциональным. Чем ФП в C# лучше, чем в JS ты так и не ответил.
Ц>>>>и то, появилось не сразу L>>>И что с того, в js аналогов и сейчас нет
M>>Есть. Там где надо (в jQuery, например)
L>уныло там все с этим.
Нормально. Не больше и не меньше, чем нужно.
// http://erlanger.ru/lib/js/init.js
$('span.rss-url').each(
function(){
var url = $(this).html();
var parent = $(this).parent();
var feed = new google.feeds.Feed(url);
feed.load(function(result){
//что-то там
});
}
);
$('pre').filter(
function(){
return $(this).attr('class') == '';
}
).addClass('brush: plain');
сплошная функциональщина.
L>>>хуже. отвратительный синтаксис лямб приводит к нечитаемому коду. и программист, который заботится о поддерживаемости своего кода, трижды подумает прежде чем станет писать в функциональном стиле на js-е.
M>>Странно, миллионы программистов используют ФП в JS и не парятся, а Lloyd трижды думает
M>>*ушел писать при помощи насквозь функционального jQuery...*
L>jQuery исползуют в большинстве своем из-за удобного синтаксиса селекоторов, а не из-за того, что он "функционален". выброси оттуда селекторы и миллионы программистов сразу куда-то испарятся.
Какая разница? Функциональный подход там спокойно себе есть. Даже в банальном
body.onload = function(){
// что-то там
};
он был N лет.
миллионы программистов используют ФП в JS и не парятся, а Lloyd трижды думает
Здравствуйте, Mamut, Вы писали:
L>>Гм. Синткасис и библиотеки не относятся. Что же тогда относится-то?
M>Для полноценной поддержки ФП языку нужно что? (это вопрос «на засыпку»)
Считай, что я засыпался. Если не сложно, ответь на вопрос.
Здравствуйте, Mamut, Вы писали:
M>Нормально. Не больше и не меньше, чем нужно.
уныло. сравни с тем же линком из шарпа.
M>сплошная функциональщина.
M>>>*ушел писать при помощи насквозь функционального jQuery...*
L>>jQuery исползуют в большинстве своем из-за удобного синтаксиса селекоторов, а не из-за того, что он "функционален". выброси оттуда селекторы и миллионы программистов сразу куда-то испарятся.
M>Какая разница? Функциональный подход там спокойно себе есть. Даже в банальном
Есть. Уверен, что там в коде jquery можно и goto найти. Но означает ли это, что миллионы программистов пользуются этой библиотекой из-за наличния в ней goto?
L>>>Гм. Синткасис и библиотеки не относятся. Что же тогда относится-то?
M>>Для полноценной поддержки ФП языку нужно что? (это вопрос «на засыпку»)
L>Считай, что я засыпался. Если не сложно, ответь на вопрос.
Вообще-то, всего лишь функций высшего порядка и functions as first-class objects Ах да, и рекурсия (спасибо википедии за напоминание)
Синтаксис вообще к этому не имеет никакого отноенния. map/fold/filter и т.п. ты сам сказал, что реализуется в библиотеке (и насквозь функциональный Haskell это подтверждает).
M>>Нормально. Не больше и не меньше, чем нужно.
L>уныло. сравни с тем же линком из шарпа.
уныло. сравни с тем же Functional из Javascript'а Да хотя бы с тем же Prelude из Haskell'а
Ну что за ребячество?
M>>сплошная функциональщина.
M>>>>*ушел писать при помощи насквозь функционального jQuery...*
L>>>jQuery исползуют в большинстве своем из-за удобного синтаксиса селекоторов, а не из-за того, что он "функционален". выброси оттуда селекторы и миллионы программистов сразу куда-то испарятся.
M>>Какая разница? Функциональный подход там спокойно себе есть. Даже в банальном
L>Есть. Уверен, что там в коде jquery можно и goto найти. Но означает ли это, что миллионы программистов пользуются этой библиотекой из-за наличния в ней goto?
Нет. Повторю еще раз. В придуманном тобой мире в ФП-подход в javascripte мало кто использует («программист трижды подумает, ага»). В реальном мире его используют миллионы (иногда даже не догадываясь об это, кстати).
Здравствуйте, Mamut, Вы писали:
L>>Считай, что я засыпался. Если не сложно, ответь на вопрос.
M>Вообще-то, всего лишь функций высшего порядка и functions as first-class objects Ах да, и рекурсия (спасибо википедии за напоминание)
Это как бы необходимое условие, чтобы язык имел право называться функциональным. Этим критериям js удовлетворяет, не спорю.
Когда я писал, что он хреново поддерживает ФП, я имел в виду, что писать в функциональном стиле на js неудобно и зачастую аналогичный императивный код выглядит лучше и понятнее. Причина этого неудобства, имхо, в громоздком синтаксисе лямбд и отсутствии стандартной библиотеки.
Здравствуйте, Mamut, Вы писали:
L>>уныло. сравни с тем же линком из шарпа.
M>уныло. сравни с тем же Functional из Javascript'а Да хотя бы с тем же Prelude из Haskell'а
Спасибо, конечно, но зашивать "функции" в строки большого ума не надо. Этак и в С можно подключить интерпретатор питона.
M>Ну что за ребячество?
И в самом деле.
L>>Есть. Уверен, что там в коде jquery можно и goto найти. Но означает ли это, что миллионы программистов пользуются этой библиотекой из-за наличния в ней goto?
M>Нет. Повторю еще раз. В придуманном тобой мире в ФП-подход в javascripte мало кто использует («программист трижды подумает, ага»). В реальном мире его используют миллионы (иногда даже не догадываясь об это, кстати).
Повторю еще раз. jQuery в реальном случае используют из-за удобных селекторов, а не из-за наличия в нем ФП-подхода.
L>>>уныло. сравни с тем же линком из шарпа.
M>>уныло. сравни с тем же Functional из Javascript'а Да хотя бы с тем же Prelude из Haskell'а
L>Спасибо, конечно, но зашивать "функции" в строки большого ума не надо. Этак и в С можно подключить интерпретатор питона.
And all these functions accept strings, such as 'x -> x+1', 'x+1', or '+1' as synonyms for the more verbose function(x) {return x+1}.
Ты не поверишь, но обыкновенные функции он тоже принимает.
L>>>Есть. Уверен, что там в коде jquery можно и goto найти. Но означает ли это, что миллионы программистов пользуются этой библиотекой из-за наличния в ней goto?
M>>Нет. Повторю еще раз. В придуманном тобой мире в ФП-подход в javascripte мало кто использует («программист трижды подумает, ага»). В реальном мире его используют миллионы (иногда даже не догадываясь об это, кстати).
L>Повторю еще раз. jQuery в реальном случае используют из-за удобных селекторов, а не из-за наличия в нем ФП-подхода.
Повторю в третий раз, уже другими словами. Даже без jQuery функциональщина в JS ыла, есть и будет.
Здравствуйте, Mamut, Вы писали:
L>>Спасибо, конечно, но зашивать "функции" в строки большого ума не надо. Этак и в С можно подключить интерпретатор питона.
M>
M>And all these functions accept strings, such as 'x -> x+1', 'x+1', or '+1' as synonyms for the more verbose function(x) {return x+1}.
M>Ты не поверишь, но обыкновенные функции он тоже принимает.
Ты не поверишь, но с этим синтаксисом мы опять приходим к озвученой ранее проблеме громоздкого синтаксиса. Btw, задумайся, зачем они сделали возможность передавать строки, там где можно использовать функции.
M>>>Нет. Повторю еще раз. В придуманном тобой мире в ФП-подход в javascripte мало кто использует («программист трижды подумает, ага»). В реальном мире его используют миллионы (иногда даже не догадываясь об это, кстати).
L>>Повторю еще раз. jQuery в реальном случае используют из-за удобных селекторов, а не из-за наличия в нем ФП-подхода.
M>Повторю в третий раз, уже другими словами. Даже без jQuery
Ок. Согласился-таки, что jQuery ты приплел не в тему. Уже лучше.
M>функциональщина в JS ыла, есть и будет.
С этим никто и не соприт. Я писал, что она там хреновая, а значит она там-таки есть.
V>А вот если ты вдруг хочешь скопировать этот документ на какое-то третье устройство — тут-то и оказывается, что хорошо бы это был файл. Или еще лучше — коллекцию своих документов (естественным образом организовываемую в папку) — но то место, куда ты это копируешь, не понимает папок в смысле твоего приложения по работе с документами (кстати, совершенно реальный случай с иТюнс)
А что значит скопировать?
Твои документы должны быть доступны только тебе на всех устройствах которыми ты пользуешься,
ровно в том виде и версии, которые ты оставил в последний раз.
L>Когда я писал, что он хреново поддерживает ФП, я имел в виду, что писать в функциональном стиле на js неудобно и зачастую аналогичный императивный код выглядит лучше и понятнее. Причина этого неудобства, имхо, в громоздком синтаксисе лямбд и отсутствии стандартной библиотеки.
Насчет громоздкости. Это, скорее, во благо, чем во зло.
Потому что чем отличается лямбда от функции? Да ничем, абсолютно. При этом в C#, например, они используют абсолютно разный синтаксис.
В JS лямбды/анонимные функции используются повсеместно (примеры я уже приводил), наравне с обычными функциями. Зачем им другой синтаксис в таких условиях — непонятно.
Здравствуйте, Цыба, Вы писали:
Ц>Здравствуйте, Mamut, Вы писали:
M>>Чем? Если брать практическиеприменения, то скорее даже хуже.
Ц>эээ, я, наверно, не совсем то имел в виду. возьмём практический подход, например, к JSLINQ. фильтрация следующим образом, вроде, более-менее читаема:
Ц>
Ц>(*) дефолтный автоформаттер того же Intellij Idea уродливо форматирует это выражение так, впрочем подобное форматирование применяется повсеместно:
Ц>