Size: a a a

2016 November 14

j

javascript@conference.jabber.ru in javascript_ru
<ibxth> ForNeVeR: а почему такие загадки не уважаешь? Забавно же.
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> ibxth: потому и не уважаю :)
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> Ну то есть в данном случае список [4,5] является аргументом (a -> mb)?
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> Это содомия.
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> Наверняка срабатывает ещё какой-нибудь дурацкий тайпкласс у него.
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> А, не, туплю, пардоньте.
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> Пока вспоминал, как работает бинд, забыл исходный пример %)
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> ibxth: а ок, я понял, как это работает и почему.
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> ibxth: бинд у списков конкатенирует результат применения функции к каждому элементу.
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> ibxth: ты в бинд передаёшь список [1,2,3] и функцию, которая для любого входа возвращает [4,5].
источник

j

javascript@conference.jabber.ru in javascript_ru
<ibxth> Короче отгадка. return [4,5] :: имеет тип m1 [b].
[1,2,3] >>= ожидает дальше для себя (a -> [b]) или если записать по другому ((->) a [b])
Компилятор сопоставляет m1 [b] и (->) a [b] и вместо m1 берет ((->) a). И код для ретурна соответственно берется из монады ((->) a). А там он выглядит как return = const
источник

j

javascript@conference.jabber.ru in javascript_ru
<jt3k> декоратор это  обычная функция,   которая на вход принимает твою функцию, и  добавляет к ней дополнительный функционал

например у тя большой проект и ты решил переименовать метод какойнить…  но если ты его переименуешь то  возможно твои юзеры  испытают проблемы  с использованием твоей библиотеки. и поэтому   тебе нужно  сделать  ворнинг    который будет вылазить в консоль каждый раз когда твой метод кто-нибудь  запустит.
чтобы не  менять код метода  ты просто  добавляешь перед определением метода  декоратор  в коде это будет выглядеть примерно вот так.

@deprecated("НЕ ЮЗАЙТЕ ЭТОТ МЕТОД ПОТОМУЧТО Я ВЫПИЛЮ ЕГО В СЛЕДУЮЩЕЙ ВЕРСИИ!!! а вмето него юзайте метод myMehtod2")
myMethod (a,b,c) { /* код твоего метода*/},
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> ibxth: да, это (почти) логично.
источник

j

javascript@conference.jabber.ru in javascript_ru
<jt3k> на выходе  произойдёт примерно вот это
myMethod(a,b,c){
 console.warn("НЕ ЮЗАЙТЕ ЭТОТ МЕТОД ПОТОМУЧТО Я ВЫПИЛЮ ЕГО В СЛЕДУЮЩЕЙ ВЕРСИИ!!! а вмето него юзайте метод myMehtod2");
 /* вызов твоего метода */
},
источник

j

javascript@conference.jabber.ru in javascript_ru
<Hugo> а это что? debounce ?
источник

j

javascript@conference.jabber.ru in javascript_ru
<ibxth> ForNeVeR: для людей, которые не особо хорошо его знают это неожиданно. Почему-то кажется, что return будет братmся из той монады, которая слева от >>=.
источник

j

javascript@conference.jabber.ru in javascript_ru
<ForNeVeR> ibxth: а я просто забыл достаточно, чтобы просто поверить, что это будет работать :)
источник

j

javascript@conference.jabber.ru in javascript_ru
<jt3k> Hugo: читани . это полезно…
вкратце  это когда у тебя есть  какаянить часть кода которая часто вызывает какуюнить  фкнкцию…  (например автокомплит в  полях ввода.) и ты хочешь чтобы  эта функция  запускалась например   один раз после того как пользователь допечатает текст,   то  обернув  функцию в дебаунс ты добъёшься этого…

вот пример http://jsfiddle.net/missinglink/19e2r2we/
источник

j

javascript@conference.jabber.ru in javascript_ru
<jt3k> там надо часто кликать.. чтобы понять что происходит
источник

j

javascript@conference.jabber.ru in javascript_ru
<;!> охх
источник