@frp_ru

Страница 103 из 420
Denis
14.07.2017
18:26:29
вот пример с параморфизмом (тот же что и zipWith) bloat' :: a -> [a] -> [[a]] bloat' y = para phi where phi = \case Nil -> [[y]] Cons x (xs, ys) -> (y:x:xs) : fmap(x:) ys

Vadim
14.07.2017
18:35:56
Так, у меня еще один вопрос насчет ap Приведенный выше код: ap(equals, reverse)('aba') // => true ap(equals, reverse)('ab') // => false делает ровно то же, что и chain chain(equals, reverse)('aba') // => true chain(equals, reverse)('ab') // => false А есть ли у ap какие-то свои уникальные возможности работы с функциями, в отличии от chain?

Google
Vadim
14.07.2017
18:41:15
В данном случае ap не может что-то уникальное предложить?

Если я работаю с функциями

В качестве аргументов

Denis
14.07.2017
18:41:44
В данном случае ap не может что-то уникальное предложить?
ну вот тебе задачка, средуцируй оба выражения по шагам

chain = k => f => r => k(f(r)(r))

еще задание

докажи что chain = B(B)(W) где B = x => y => z => x(y(z)), W = f => x => f(x)(x)

Дмитрий
14.07.2017
18:47:26
В данном случае ap не может что-то уникальное предложить?
https://github.com/fantasyland/fantasy-land#derivations Смотри сам. но в целом, вызов .map и .chain уже подразумевает использование ap

Denis
14.07.2017
18:48:24
ну и еще с ap эффектом управлять нельзя, а с chain можно

Vadim
14.07.2017
19:12:01
ну и еще с ap эффектом управлять нельзя, а с chain можно
В смысле? ap(() => (func) => compose(inc, func), add)(1)(2) // => 4

Denis
14.07.2017
19:12:44
ты с массивом что-то лучше поделай

Vadim
15.07.2017
06:58:21
Вот кстати, простейший пример что б понять разницу в действии между chain и ap в работе с функциями: chain(concat, toUpper)('a') // => "Aa" ap(concat, toUpper)('a') // => "aA"

chain = k => f => r => k(f(r)(r))
Из моего примера получается что chain работает так: chain = k => f => r => k(f(r))(r) Просто как противоположность работы ap ap = k => f => r => k(r)(f(r)) Вот и вся разница в применимости этих двух методов )

Google
Combot
15.07.2017
08:54:18
combot.org/chat/-1001071213089

Vadim
15.07.2017
10:38:23
Еще маленький, хотя и наверное бесполезный трюк с ap (как и с chain), это возможность передать сразу два однотипных аргумента в функцию, указав только один ) ap(add, identity)(3) // => 6 Что немного короче чем compose(apply(add), flip(repeat)(2))(3) // => 6

andretshurotshka?❄️кде
15.07.2017
10:44:22
А useWith и converge ?

Vadim
15.07.2017
10:49:07
unnest(add)(3)
Ух ты! Неожиданно! Спасибо! )

Denis
15.07.2017
10:49:32
тут нет ничего неожиданного это же монадный join

средуцируй chain(identity)(3)

в данном случае стрелка Клейсли тривиальная - k = indentity

chain = k => f => r => k(f(r))(r) chain(identity) = f => r => identity(f(r))(r), f => r => f(r)(r) что есть W или комбинатор - дубликатор

Vadim
15.07.2017
10:53:55
Ну да, если учесть что unnest это просто R.chain(R.identity), как и указано в документации, то логично что это то же что и chain(identity, add)(3)

Denis
15.07.2017
10:55:12
ну вообще играться с монадами и аппликативами на примере с функциями не особо прикольно. Для функциональных стрелок (функций) это все тривиально, и если интересно то можешь на комбинаторы посмотреть

Vadim
15.07.2017
10:55:54
Комбинаторами является что?

Denis
15.07.2017
10:56:22
теория комбинАторного исчисления

Vadim
15.07.2017
10:57:00
Опять пошли матюки ) Ну ладно, может через годик... )

Дмитрий
15.07.2017
11:01:01
Комбинаторами является что?
fantasy birds глянь как самый упоротый случай)

Denis
15.07.2017
11:02:02
самый упоротый тут http://www.angelfire.com/tx4/cus/combinator/birds.html когда через аксиоматику SK выражается все остальное

Vadim
15.07.2017
11:06:13
Ух! Тут пока проблема не в понимании, а в осознании случаев когда какие комбинаторы могут понадобиться. Так или иначе, требуется дозревание )

Denis
15.07.2017
11:06:48
ну для себя можешь понять что комбинаторы дают возможность писать в point free

Vadim
15.07.2017
11:07:13
А compose это просто конструктор любых комбинаторов?

Google
Denis
15.07.2017
11:07:18
так как это минимальная единица в языке комбинаторов и у нее есть единственный метод - это применение

Vadim
15.07.2017
11:09:48
Получается что K это always, а S это ap

Denis
15.07.2017
11:10:30
Спасибо! И картинка очень интересная.
https://github.com/xgrommx/practical-functional-programming/blob/master/combinators/index.js

const MO = B1(W)(B); const MO1 = B(B(W))(B);

еще как chain можно сделать вроде

andretshurotshka?❄️кде
15.07.2017
11:13:43
BMW

Vadim
15.07.2017
11:14:49
Но все-равно, пока до осознания СЛУЧАЕВ ПРИМЕНЕНИЯ мне еще далеко. Кстати, существует ли какая-то статистика сколько времени "типичному программисту" с нормальным опытом в программировании вообще (например ООП), но без опыта в функциональщине требуется для перехода к полноценной работе в ФП? Год погруженной работы над проектом? )

У хаскеля например какой типичный срок? )

Denis
15.07.2017
11:16:17
BMW
интересно что это будет за комбинатор) B = x => y => z => x(y(z)) M = x => x(x) W = f => x => f(x)(x)

Vadim
15.07.2017
11:17:46
https://github.com/xgrommx/practical-functional-programming/blob/master/combinators/index.js
Я правильно понимаю, что практически все (а может и все) эти комбинаторы уже есть в ramda?

Denis
15.07.2017
11:18:08
ramda не о комбинаторах

Vadim
15.07.2017
11:19:49
ramda не о комбинаторах
Но большая часть ее методов, если я правильно понял, это комбинаторы

Denis
15.07.2017
11:19:57
а как проверить?
попробовать средуцировать

Yung
15.07.2017
11:21:04
Кто-то https://github.com/calmm-js/partial.lenses использует? Оно с рамдой имеет смысл? Мне кто-то посоветовал с иммьтаблжс юзать, но я не уверен, а ридми слишком жирный чтобы сделать какие-то выводы сразу

Denis
15.07.2017
11:21:40
есть еще https://github.com/phadej/optika

Google
Denis
15.07.2017
11:22:49
optika тоже

Дмитрий
15.07.2017
11:23:00
Нет

Admin
ERROR: S client not available

Denis
15.07.2017
11:23:10
при том это от чувака кто в haskell пишет и публикует либы на нем

Дмитрий
15.07.2017
11:23:16
При всем уважении к phadej

Vadim
15.07.2017
11:23:24
Ты не думай об этом)) Просто юзай что понимаешь
Тоже так думаю ) Тем более, что чем дальше, тем труднее будет общаться с коллегами. Тем более во фронтенде ) В смысле, проталкивать свои решения в проектах.

Denis
15.07.2017
11:23:48
При всем уважении к phadej
а вообще лучше не выебываться и юзать норм профункторные линзы и purescript

ну и https://github.com/gcanti/monocle-ts

Дмитрий
15.07.2017
11:24:37
Тем более

Denis
15.07.2017
11:24:40
ахаха https://github.com/gcanti/profunctor-lenses-ts

andretshurotshka?❄️кде
15.07.2017
11:25:08
лол

Дмитрий
15.07.2017
11:25:50
Кроме того, чтобы быть математиком и хаскеллистом, нужно ещё нормальное api у библиотеки

Denis
15.07.2017
11:26:19
ну и для тех у кого нет жизни)) http://oleg.fi/gists/posts/2017-04-18-glassery.html

https://artyom.me/#lens-over-tea

Дмитрий
15.07.2017
11:26:59
partial покрывает вообще такую тонну кейсов, что мне кажется вот у автора точно жизни нет

Denis
15.07.2017
11:27:23
это же просто Кметтовские линзы

Дмитрий
15.07.2017
11:27:27
Там вообще всё всё напихано

Со спецификой жс

Denis
15.07.2017
11:27:42
а если честнее то вроде van laarhoven lenses

Дмитрий
15.07.2017
11:30:43
Я просто только сегодня утром опять сравнивал либы для оптики в жс. У всех — очень крутые и продвинутые наброски, увы ?

Google
Yung
15.07.2017
11:30:47
Такс, тогда второй вопрос, а использование какого-нибудь rxjs с графом Кью Эль имеет право на жизнь и вообще юзабельно?

andretshurotshka?❄️кде
15.07.2017
11:30:55
?

Дмитрий
15.07.2017
11:31:32
Graphql не нужен)

Denis
15.07.2017
11:31:38
+1

Yung
15.07.2017
11:31:39
нафига?
Патамушно я магу (это петпроджект сейчас, есть время потыкать новое)

Чтобы потом уже выбрать что норм зашло, а что не стоит тянуть в рабочий проект

Дмитрий
15.07.2017
11:32:49
Спойлер — graphql не зайдёт))

Yung
15.07.2017
11:33:30
Спойлер — graphql не зайдёт))
Но иксперты на медиуме сказали что это будущее!

Denis
15.07.2017
11:33:41
graphql глазастая ебанина узковходящая не в каждую дырку

Yung
15.07.2017
11:35:25
Да мы тут когда проект пилили, думали взять графа то, но в итоге передумали, там статейки именно от всяких фб не очень радужные, проблемы с секюрностью во все поля и костыли чтобы это как-то замять

Но на пете решил потыкать мб

Страница 103 из 420