[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Functional javascript



Иван Лох -> debian-russian@lists.debian.org  @ Tue, 17 Jul 2012 14:54:00 +0400:

 >>  >> В функциональных языках - чистая.  JS, а также Perl, Python etc. - языки
 >>  >> с _элементами_ функциональной парадигмы.  Там функция - не first-class
 >>  >> entity, и количество возможных операций с нею сильно ограничено.
 >> 
 >>  ИЛ> Чем это функция в javascript не first-class объект? Вполне, себе.  
 >> 
 >> Как минимум, частичное применение приходится делать наворачиванием еще
 >> одной функции сверху.  Композицию (до подстановки параметров) - тоже.
 >> Она не моноид (я понимаю, что в JS вообще нет этой абстракции), поэтому
 >> складывать функции соответственно сложению возвращаемых значений нельзя.
 >> Ну, то есть каждый раз закатывать солнце вручную - определить операцию
 >> над функциями нельзя (операция над функциями - это на уровень абстракции
 >> выше, чем функция, которая может получить функцию в качестве аргумента и

 ИЛ> Это синтаксический сахар.

Да все языки, кроме машинных кодов - синтаксический сахар...

 ИЛ> Понятно, что по-умолчанию функция в js определена так, что
 ИЛ> каррировать ее надо руками. Но у нее есть свойства, которые
 ИЛ> позволяют это легко сделать. Ну или functional javascript
 ИЛ> подгрузить...  (http://osteele.com/sources/javascript/functional/)
 ИЛ> Который со страшными боями, но постепенно пролезает в стандарт.

 ИЛ> P.S. "О моноидах" есть большая статья "Category Theory in JavaScript" Майка Стея,
 ИЛ> http://jscategory.wordpress.com/ Он их там лихо лепит. Не без магии, кончено. 

Понимаешь, это базовые абстракции, используемые функциональщиками.  Если
магия требуется для того, чтобы их лепить, то когда ж дойдет дело для
того, чтобы ими пользоваться?

А так, конечно, не вопрос - если у тебя есть замыкание, то ты можешь
слепить любую хрень для работы с функциями; если у тебя есть два
указателя, один из которых - на функцию, то ты можешь слепить замыкание;
если у тебя есть JMP, то ты можешь слепить функцию...  Все языки
программирования - они про синтаксический сахар.  На том или ином уровне
абстракций, с которыми, благодаря этому сахару, удобно работать.


Reply to: