@frp_ru

Страница 171 из 420
Kelin
24.09.2017
23:54:17
Что значит без флоу ???? А, ты про метод, да, лучше без него
окей, как без метода добиться поинт фри

Дмитрий
24.09.2017
23:54:40
Напоминаю

Кстати, рамда, судя по их кукбуку https://github.com/ramda/ramda/wiki/Cookbook пропагандирует строго "функциональный подход" на счет того что б не сохранять в константах промежуточные данные. Во всех примерах они оперируют ТОЛЬКО ФУНКЦИЯМИ. Это, на мой взгляд, уменьшает читабельность кода (хотя может я это говорю с непривычки). Есть ли преимущество у такого подхода? Я полюбил рамду из-за возможностей разного рода пайпов/компосов и прочего. Но в своем коде я обычно по преждему использовал константы с промежуточными значениями. А есть ли преимущества от отказа от сохранения промежуточных значений, и манипулирования только лишь функциями?

Отказ от переменных ради отказа от переменных не нужен, если проще написать с ними — пиши, это ок) Стиль рамды позволяет абстрагироваться от конкретных объектов и описывать операции в общем виде, в универсальной и краткой форме

Google
Дмитрий
24.09.2017
23:54:40
Большую часть времени в обычном жс рамда выступает в качестве эффективного средства для функций - однострочников) Никаких упоротых «композ через композ», просто какие - то атомарные операции в три-четыре последовательных действия

Потом начинаешь замечать, что всё большая и большая часть задач оказывается атомарной да и вообще повторяется

А попытаться сразу писать point-free-everything — это прямой путь к fp fatigue, сколько раз уже наблюдал подобное ?

Смысл в эффективности, а не в point free Это не видеть за деревьями леса

? animufag ?
24.09.2017
23:55:34
окей, как без метода добиться поинт фри
в функии рекурсивно вниз проставляющей рекурсию наверх плиз не делай пойнт фри

Дмитрий
24.09.2017
23:55:57
? animufag ?
24.09.2017
23:56:40
фп обычно не делают со ссылкамм на парентов и братьев/сестёр

Дмитрий
24.09.2017
23:56:45
Я сейчас читаю purescript by example как раз на стейтах и ридерах, там это нормально выглядит Но здесь вам не там, очевидно

Kelin
24.09.2017
23:57:03
ну ля, мне не нравится писать трижды



Kelin
24.09.2017
23:57:08
шо за ебень

Google
Павел
24.09.2017
23:57:26
Добрый вечер всем. Подскажите пожалуйста, возможно ли в связке Sanctuary + Fluturejs сделать режект (Fluture.reject()) или ресолв (Fluture.of()) из Sanctuary, например, из Either?

Дмитрий
24.09.2017
23:57:46
Не оч понимаю формулировку ??

Kelin
24.09.2017
23:57:50
ебать

Дмитрий
24.09.2017
23:57:59
Точнее, в чём проблема

Павел
24.09.2017
23:58:11
Future.of('') .chain( S.either( Future.reject, Future.of ) )

Кинет ошибку

Дмитрий
24.09.2017
23:59:06
кинь ссылку
https://leanpub.com/purescript/read Мне на самом деле прям уже ппц как припёрло и нужно запутанную часть кода переписать на purescript, поэтому пытаюсь въехать волей неволей

someFuture // Future[ Reject, Resolve ] someFuture.fold(Left, Right) // Future [ void, Either [ Reject, Resolve ] ]

Kelin
25.09.2017
00:01:12
как у вас в голове столько структур держится

Дмитрий
25.09.2017
00:01:15
То есть фолд упакует твои значения в resolve поле

Kelin
25.09.2017
00:01:19
в читабельном состоянии

kana
25.09.2017
00:01:27
Не, ему нужно наоборот Either a b -> Either (Future a c) (Future d b)

Kelin
25.09.2017
00:01:31
Дмитрий
25.09.2017
00:01:45
как у вас в голове столько структур держится
Нужно не учить, а просто понимать

Kelin
25.09.2017
00:01:52
да это понятно

kana
25.09.2017
00:01:57
Там either как надо работает, но какой-то санкторный чекер говорит, что неь типа для флутуры

Дмитрий
25.09.2017
00:02:03
Ааа

Google
Дмитрий
25.09.2017
00:02:24
Ну sanctuary говнина та ещё, я извиняюсь за свой французский

Рантайм-типизация — ну такое

Павел
25.09.2017
00:03:32
Хм

Чем он плох?

Дмитрий
25.09.2017
00:03:43
Бтв, её можно отключить https://gist.github.com/zerobias/f42247222ffbbabbe8591df807bc0a12

Чем он плох?
А зачем он? Я просто не понимаю

Павел
25.09.2017
00:04:28
Расширенная версия рамды, монадки

Дмитрий
25.09.2017
00:04:51
Я написал свой either, который вносит фактически близкий к абсолютному нулю оверхед (быстрее чем у folktale)

Он пользуется статической типизацией флоу, так как то проще

Видеть что у тебя получается не по дебаггеру а прямо в подсказках ide

kana
25.09.2017
00:05:52
Че лично мне не понравилось, дык это "fantasy-land/chain" вместо "chain". Было бы лучше, если бы было два варианта, сделать несложно же

Дмитрий
25.09.2017
00:06:43
Так как все сошлись на том, что юзерские map и chain авторы могут захотеть имплементировать по своему

У fluture такой ap например

"не по канону" Но интероп сохраняется, потому что либы общаются через fantasy-land/ap

Kelin
25.09.2017
00:07:54
я придумал

Дмитрий
25.09.2017
00:08:21
Но как бы там ни было, у меня есть идея получше, чем просто длинный метод. Правда не уверен, кто его поддержит, но для себя я такое сделал)

Kelin
25.09.2017
00:08:29




Дмитрий
25.09.2017
00:09:35
Но как бы там ни было, у меня есть идея получше, чем просто длинный метод. Правда не уверен, кто его поддержит, но для себя я такое сделал)
Вынес отдельный модуль с интероп-символом Symbol.for('@@typeclass'), взял идею из symbol-observable, который не существует в стандарте, но благодаря этому модулю вполне действует

Google
? animufag ?
25.09.2017
00:12:29
вроде initServices у тебя принимала один аргумент

а updateWith 4

Kelin
25.09.2017
00:12:57
неееееет

щас все будет

посоны



Дмитрий
25.09.2017
00:50:57
Побочный эффект от чтения purescript by example: когда автор начинает соединять монады Reader, State и Writer в новую, более мощную монаду RWS и приделывает к ней монадический трансформер RWST, то хочется кричать ?

Admin
ERROR: S client not available

? animufag ?
25.09.2017
01:04:01
тип он покрывает и ридер и врайтер

? animufag ?
25.09.2017
01:04:23
не думаю что я без ошибок написал

Kelin
25.09.2017
01:04:38
Зачем так усложнять

? animufag ?
25.09.2017
01:04:48
ПОЙНТФРИ

Kelin
25.09.2017
01:04:49
Нечитаемо же нихрена

? animufag ?
25.09.2017
01:04:59
ради него же сражаемся

Дмитрий
25.09.2017
01:05:07
я думмал стейта достаточно
Не, там крутая идея, мне по ходу именно это и нужно было The first type parameter, r, represents the global configuration type. The second, w, represents the monoid which we will use to accumulate a log, and the third, s is the type of our mutable state

? animufag ?
25.09.2017
01:05:18
я заранее оговорился что тут ебанина какая-то

Kelin
25.09.2017
01:05:18
Ради нормального, а не упоротого

Google
Дмитрий
25.09.2017
01:05:23
О, нащёт флоу через флоу у меня кулстори есть ?

? animufag ?
25.09.2017
01:05:30
и после этого уже можно ебашить

Дмитрий
25.09.2017
01:07:15
В общем когда я только открыл для себя рамду я сразу по этой теме люто угорел, и переломной точкой было написание кода, смысл которого я перестал понимать примерно через два часа после его написания

https://github.com/zerobias/speak-r/blob/master/app/core/splitter.js#L34

Зацените

P — это пайп, который может принимать массивы

Я по прежнему не понимаю что тут происходит но кажется это пайпы, которые генерируют другие пайпы, которые генерируют другие пайпы

? animufag ?
25.09.2017
01:10:43
initServices = flow(flip(apply), map, [flip(updateServices), mapInitService], flow)
поясню 1) получаем на входе service и кидаем его на второй аргумент у Function.apply 2) получаем на входе ($ service) и кидаем его в мап 3) получаем map($ service) и кидаем ему аргументы две функции которые принимают сервайс первым аргументом updateServices = update('services') и она первым аргументом принимает функцию так что флипаем её flip(update('services')) чтобы в неё закинуть service 4) промапав получаем список [services -> service, service] осталось их применить и видимо flow c этим справится (хотя тут сомневаюсь)

Дмитрий
25.09.2017
01:11:05
??

? animufag ?
25.09.2017
01:11:28
лол

Дмитрий
25.09.2017
01:11:34
Да, вот это в тот момент я ощутил отчётливо ?

? animufag ?
25.09.2017
01:11:52
не тут рили челы в джс немного как-то поехали на поинтфри

есть ещё много направления для саморазвития

Дмитрий
25.09.2017
01:12:32
Просто доки рамды акцентируют на этом внимание, а на остальных аспектах — нет

? animufag ?
25.09.2017
01:12:50
а поинтфри это как бы небольшая рекомендация на случай если у тебя скопилось несколько одноместныхх функций

Kelin
25.09.2017
01:13:04
Так ладно

Я вас покидаю

Дмитрий
25.09.2017
01:13:20
А, ну впоне может быть

Kelin
25.09.2017
01:13:33
Уж время позднее

Настолько позднее, что уже раннее

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