@frp_ru

Страница 34 из 420
Vasiliy
04.02.2017
13:14:12
во 2 теряется контекст

https://goo.gl/nJsYRq

Vladimir
04.02.2017
13:15:11
ты уверен, что тебе нужен контекст?

Google
Vasiliy
04.02.2017
13:15:24
да, ради этого все и затевалось

я там байндолл делаю) ну ты наверное заметил)

Vladimir
04.02.2017
13:17:44
надо позвать @ZeroBias

я пока отвлечен, что бы по существу помочь

=(

Vasiliy
04.02.2017
13:42:52
чееет я уже не могу прям, не понимаю( очень странно, я уже полчаса пялюсь в это

Vladimir
04.02.2017
13:50:59
спроси в гиттере рамды

Vasiliy
04.02.2017
13:51:20
да, я там сразу спросил

похоже converge только бинарные ф-ции хочет не уверен, пока не понял до конца

Дмитрий
04.02.2017
13:53:16
Нет, любые

Vasiliy
04.02.2017
13:53:22
https://goo.gl/sKRU2K

но вот это точно не правильно

Дмитрий
04.02.2017
13:53:53
Я пока только проснулся, а на телефоне репл рамды не работает

Google
Дмитрий
04.02.2017
13:54:17
Но могу сказать, что возможно тебе просто нужно посмотреть на useWith

ap кстати юзать вообще не нужно, если у тебя не монады)

Vasiliy
04.02.2017
13:57:14
да понятно, ap это ведь <*>, это просто пример

Дмитрий
04.02.2017
13:59:15
ap это juxt, если мне не изменяет память

https://goo.gl/sKRU2K
Не понимаю, что тебя тут смущает)

Vasiliy
04.02.2017
14:00:11
ap это juxt, если мне не изменяет память
ну я про то что (<*>) :: f (a -> b) -> f a -> f b

Не понимаю, что тебя тут смущает)
ну тут: add1(2) -> 2 + 2 -> 4 subtract1(2) -> 2 - 5 -> -3 multiply1(4, -3) -> 4 * 2 -> 8 а, ну да, все верно, сорри (%

Дмитрий
04.02.2017
14:01:40
Конверж сначала применяет функции к переданным переменным а потом отправляет их в результат

Vasiliy
04.02.2017
14:03:11
ну да, т.е. это converge(pipe, [flip(prop), flip(bind)])(o); должно правильно работать, это должно быть равносильно этому: pipe(flip(prop)(o), flip(bind)(o)); разве нет? мне кажется я чего-то не вижу, но чего именно? useWith работает, но useWith(pipe, [flip(prop), flip(bind)])(o, o); да, useWith, но почему converge не канает я так и не понял(

andretshurotshka?❄️кде
04.02.2017
18:26:25
o.o

Yumi
04.02.2017
21:55:29
Я тут делаю первые шаги в освоении рамды и что-то подолгу зависаю над функциями и сложно порой понять их работу, так как в примерах другие неизвестные функции и т.д. Может есть общая лесенка изучения методов? Хотелось бы и в исходниках разобраться или лучше их отложить на будущее, как освою по примерам?

Yumi
04.02.2017
21:59:41
Класс, спасибо, пойду читать.

Vasiliy
04.02.2017
22:27:12
http://fr.umio.us/the-philosophy-of-ramda/#header

и вообще весь блог, только осторожно, там ф-ции депрекейтед уже некоторые, но там важен больше смысл/идеология

а чем-то можно это заменить в ramda? 1 pipe(path(['x', 'y']), complement(isNil)) 2 pathSatisfies(['x', 'y'], complement(isNil)) лан сойдет 2 типа hasPath можно свой прост сделать так и все глупый вопрсо) nvm: const hasPath = pathSatisfies(complement(isNil))

хочу payload & meta reducer как в redux-act, но не хочу сам redux-act: export const action = <T>(type: string, payload: ArgsReducer<T> = identity, meta?: ArgsReducer<T>) => (...args) => meta ? ({ type, payload: payload(...args), meta: meta(...args) }) : ({ type, payload: payload(...args) }); мб как-то можно это выразить через applySpec, хм, или нет т.е. типа того, но совсем не так: export const action = <T>( type: string, payload: ArgsReducer<T> = identity, meta: ArgsReducer<T> = always({}), ) => applySpec({ type: always(type), payload, meta });

Yumi
06.02.2017
23:23:15
Нубский вопрос. Стоит ли стремиться к чистой функции, хотя функция все равно останется грязной? Или смысла особого нет?

Google
Yumi
06.02.2017
23:23:56
Cтремиться - уменьшать влияние за пределами функции в смысле.

Vladimir
06.02.2017
23:35:44
проще тестировать

функция зависит только от аргументов

а не от предопределенных в модуле констант

а тебе для теста возможно нужно их переопределять

Yumi
07.02.2017
02:41:43
Попробовал максимально вынести в аргументы, действительно яснее даже для головы стало.

Спасибо.

Vasiliy
07.02.2017
16:01:32
офигенный пост про трансдьюсеры https://medium.com/@roman01la/understanding-transducers-in-javascript-3500d3bd9624#.8dh6uxais

Nikita
07.02.2017
16:06:05
а мне эта понравилась

https://m.habrahabr.ru/post/237613/

только таких красивых картинок нет

Vasiliy
07.02.2017
16:06:30
да) я обе читал) ну вот я щас наткнулся и понял, что круто он расписал, очень просто и доходчиво, даже проще чем в том посте на хабре и вообще он интересный, я другие посты его еще почитал

Nikita
07.02.2017
16:06:35
:)

Vasiliy
07.02.2017
16:11:48
да, я смотрел) ну тут я по критерию простоты оценивал) кстати, надо пересмотреть

Nikita
07.02.2017
16:12:12
Ilya
07.02.2017
16:25:22
Кто-нибудь в питоне знает почему itertools.groupby может создавать не уникальные ключи?

Vasiliy
07.02.2017
16:36:10
наверное, это из-за сайд-эффектов (простите)

Дмитрий
07.02.2017
18:59:42
Мда))

Google
Vasiliy
07.02.2017
18:59:45
да) удалил)

Дмитрий
07.02.2017
19:04:12
Вообще это кстати известная штука

Vasiliy
07.02.2017
19:04:48
это карри (не совсем) я в hoogle поискал и поржал над собой и потом поспешно удалил сообщение XD

Дмитрий
07.02.2017
19:05:16
Ну это один из твоих вариантов был))

А сначала у тебя такой был (( a, b ) -> a ) -> b -> a -> a

Это S.flip

Vasiliy
07.02.2017
19:06:54
просто это вот тоже самое

((S, A) -> S) -> A -> (S -> S):

useWith(partial, [flip, of]) pipe(flip, curry)

Дмитрий
07.02.2017
19:07:40
Ну да

Vasiliy
07.02.2017
19:10:59
удобно в hoogle проверять всякую дичь придумаешь что-то странное и это можно по сигнатуре проверить, что это такое и как нормальные люди это называют и используют, просто вбиваешь в hoogle (только, вместо S, A, ..., Z надо a, b, ..., z) и смотришь дичь или нет https://www.haskell.org/hoogle/?hoogle=%28%28a%2C+b%29+-%3E+a%29+-%3E+a+-%3E+%28a+-%3E+a%29 не полное совпадение даже матчит

Дмитрий
07.02.2017
19:15:09
Я могу даже проще способ показать, сразу с градацией)

Vasiliy
07.02.2017
19:16:03
какой?

Дмитрий
07.02.2017
19:20:18
Открываешь ссылки по очереди, пока не найдёшь такой же комбинатор * ramdajs.com/docs/ Тривиально * https://github.com/fantasyland/fantasy-combinators Не тривиально * https://github.com/fantasyland/fantasy-birds Ты шутишь? * Не нашёл Завязывай с этим

Vasiliy
07.02.2017
19:21:39
последних двух ссылок я даже не видел)

Andrey
07.02.2017
20:04:48
>fantasy-birds надеюсь, его не используют на реальных проектах)

Дмитрий
07.02.2017
20:05:23
Я тоже надеялся

Но в прошлый раз когда тут поднималась их тема, один нашёлся

Говорил неудобно чот

Странно даже

Google
Andrey
07.02.2017
20:05:56
да, очень странно

я сегодня переписывал код с fantasy-options и Ramda на обычный императивный стиль и это как то сложно далось

Vasiliy
07.02.2017
20:14:54
зачем?)

Дмитрий
07.02.2017
20:15:24
Предложи переписать остальной проект на fantasy-land ?

Andrey
07.02.2017
20:18:07
зачем?)
медленно работало

и сложно читаемо

Vladimir
07.02.2017
20:49:46
медленно работало
бенчили? где был боттлнек?

Andrey
07.02.2017
20:51:25
бенчили? где был боттлнек?
лишние итерации + fantasy-options генерирует maybe, который по понятным причинам медленее, чем без него

в ~9 раз быстрее получилось

Дмитрий
07.02.2017
21:48:39
Если нужна скорость, то логично, что это не про такой высокоуровневый фп

Хотя реализация там конечно не блещет

Vasiliy
07.02.2017
23:47:07
кто-нибудь знает как это называется по-нормальному в ФП? https://github.com/acdlite/reduce-reducers

Vladimir
07.02.2017
23:50:21
единственное что приходит в голову трансдьюсеры

Vasiliy
07.02.2017
23:51:25
да там не совсем они, я не нашел этому названия, но оно по-любому должно быть

Владимир
08.02.2017
00:24:44
Это же обычная композиция

2 функции через которые потом проходит значение

Vasiliy
08.02.2017
00:25:11
значениЯ, арность > 1 и один аргумент фиксирован

Владимир
08.02.2017
00:26:28
Никакой разницы

Это же не хаскель

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