
Denis
10.07.2017
17:09:01
вернее
liftN(3, unapply(identity))(add(1), add(2), add(3))(1)
только тут еще juxt не хватает

Google

Дмитрий
10.07.2017
17:11:31
Ехал траверс через траверс

Vadim
10.07.2017
17:24:09
В документации по either сказано что он принимает любые аппликативы вместо функций. А когда это вообще может быть нужно? Я просто применения хоть ты тресни не вижу

Дмитрий
10.07.2017
17:24:29
FL based Either

Vadim
10.07.2017
17:24:47
Без мата пожалуйста

Дмитрий
10.07.2017
17:24:54
?
Ну вот есть такая структура, которая может содержать либо успешный результат, либо ошибку — очень удобная во многом штука

Vadim
10.07.2017
17:26:44
Ну передал я вместо функций две монады. А в качестве проверочного значения что я должен пускать?

Дмитрий
10.07.2017
17:26:52
Называется Either, или Result.
Это как Maybe, только проблему можно подробно описать

Denis
10.07.2017
17:27:51

Дмитрий
10.07.2017
17:28:34
Я не проверял именно рамду с ними, но по логике это должно работать так — если первый Either сфейлился (например реквест к серверу недошёл), то пробуем проверить второй объект (например в нём реквест к localstorage и данные там стопудоф есть)

Vadim
10.07.2017
17:29:41
А, соррри! Действительно, если вместо функций подставить монады, то вернет вместо функции монаду )

Denis
10.07.2017
17:29:42
есть еще Validation это Either с моноидом по Left

Vadim
10.07.2017
17:30:44
Значит опять документация кривая. Должно быть сказано, что either возвращает соответствующий аппликатив, а не функцию

Google

Vadim
10.07.2017
17:31:34
Функционал рамды можно понять только в ходе экспериментов, а не из документации )

Дмитрий
10.07.2017
17:32:02
Я уже писал вроде, авторы решили не пугать юзеров)
Эээ, хотя не, тут не гони на них) Там же прямо сказано
Что функция может принимать ещё, конкретно)

Vadim
10.07.2017
17:33:16
Сказано что может ПРИНИМАТЬ любой аппликатив, но сказано что возвращает ФУНКЦИЮ

Denis
10.07.2017
17:33:50

Дмитрий
10.07.2017
17:33:50
Буквоедство уже)

Denis
10.07.2017
17:34:28
у рамды вообще не тот either http://ramdajs.com/docs/#either

Vadim
10.07.2017
17:34:33
Буквоедство уже)
А откуда я как новичок должен был бы знать что с другими данными возвращается не функция? )

Denis
10.07.2017
17:35:11

Дмитрий
10.07.2017
17:35:29
Подразумевается, что если фраза про аппликативные fl функторы у тебя не вызывает вопросов, то к новичкам ты не относишься))

Vadim
10.07.2017
17:36:48
Я пока только начал догонять что относится к аппликативам, но откуда я могу знать что метод, работая с аппликативами возвращает не функцию (как сказано в документации)?
где ты вообще про это читаешь?
http://ramdajs.com/docs/#either
Returns function a function that applies its arguments to f and g and `||`s their outputs together.

Denis
10.07.2017
17:37:12
и где там про аппликатив?

Vadim
10.07.2017
17:37:23
In addition to functions, R.either also accepts any fantasy-land compatible applicative functor.

Denis
10.07.2017
17:38:06
ну хуевенько они подошли

Дмитрий
10.07.2017
17:38:14

Denis
10.07.2017
17:38:33
это не тип суммы
это про другое вообще
это поднятый ||

Google

Дмитрий
10.07.2017
17:38:45
А я про что говорю?
Да, это не тип суммы
В доке так и пишется

Vadim
10.07.2017
17:39:11
Если что,
either(Maybe.Just(true), Maybe.Just(false)) // => Maybe.Just(true)

Denis
10.07.2017
17:39:23
ну и это как-то не правильно
or and liftedOr

Дмитрий
10.07.2017
17:39:41
ADT в рамде нет и не будет принципиально

Denis
10.07.2017
17:40:15
ну я про то, что это чепуха делать такое
or и liftedOr в одном месте в одной функции

Vadim
10.07.2017
17:45:37
Я тут постепенно делаю для себе билеты по ramda в studyblue ) Описание either вкратце получилось такое: "Метод, принимающий два аппликатива, и выполняющий над их значениями операцию or."
Хотя не, он вообще с любыми функторами работает. C массивами результат неожиданный )
either([false, false, 'a'], [11]) // => [11, 11, "a"]

Denis
10.07.2017
17:53:30
[false || 11, false || 11, 'a' || 11]

Vadim
10.07.2017
17:53:47
Вообще да

Denis
10.07.2017
17:53:59
потому что у js массив гетерогенный

Дмитрий
10.07.2017
17:54:01
Ну консистентности рамде всё же не хватает)
Но хорошо, что вообще не забросили, как ramda-fantasy ?
Я тут тем временем понял, что начал подходить к паттерн-матчингу не стой стороны и mezzanine получился довольно сложным и объёмным.
Решил начать с малого, чисто самый распространённый вариант использования case)
https://github.com/zerobias/mezza
Ноль рантайма, ноль api, 100% code coverage, быстрый⚡️⚡️
Хорошо подходит к redux)

Denis
10.07.2017
17:58:52
такое же вроде можно с cond сделать

Дмитрий
10.07.2017
18:18:46
С cond неудобный синтаксис, массивы эти, плюс по сути тут три аргумента — matchBy функция, case функция и название кейса — третье в cond нужно добавлять отдельно
Да и нет тут места для ramda абстракций.
Идея в чётком представлении для человека, плюс функция должна быть максимально быстрой
даже for с индексом пришлось юзать ? С рамдой будет значительно медленнее

Google

Denis
10.07.2017
18:21:36
Сделай тест где это просядет

Дмитрий
10.07.2017
19:02:48

Denis
10.07.2017
21:07:23
https://twitter.com/bitemyapp/status/884490480586825728

andretshurotshka?❄️кде
10.07.2017
21:16:42
?
?

Сергей
11.07.2017
12:26:29

Дмитрий
11.07.2017
12:29:24
Ого))

andretshurotshka?❄️кде
11.07.2017
12:37:27
а на скрине руби

Admin
ERROR: S client not available

andretshurotshka?❄️кде
11.07.2017
12:37:30
?
хмм
я вроде видел это уже

Yumi
11.07.2017
12:39:12
Я сначала подумал, что python, потом увидел end и дошло.

andretshurotshka?❄️кде
11.07.2017
12:40:20
когда еще на cyclejs писал, натыкался на эту штуку
она не мертвая что ли?

Denis
11.07.2017
15:23:04
я это еще фиг знает когда видел)

Сергей
11.07.2017
15:23:27
https://gitlab.com/kornelski/babel-preset-php#php7-to-es7-syntax-translator

Denis
11.07.2017
15:23:48
из одной какашки в другую

andretshurotshka?❄️кде
11.07.2017
16:08:24
Лол

Yumi
11.07.2017
16:10:53

Google

andretshurotshka?❄️кде
11.07.2017
16:17:44

Yumi
11.07.2017
16:19:28
Вообще, это уже не js, это мини-язык внутри, как пасхалочка. jsfuck или как там.

Denis
11.07.2017
16:32:02
https://twitter.com/aemkei/status/883052621950537728

andretshurotshka?❄️кде
11.07.2017
18:26:27
лол

Denis
11.07.2017
22:29:52
ох ts
interface HKT<A, B> {
readonly _A: A
readonly _B: B
}
type Algebra<F, A> = <A>(fa: HKT<F, A>) => A
type Coalgebra<F, A> = (a:A) => HKT<F, A>

Дмитрий
11.07.2017
22:31:35
УЗНАЮ АВТОРА С ЧЕТЫРЕХ СТРОЧЕК

Denis
11.07.2017
22:31:52
алгебры и коалгебры мои

Дмитрий
11.07.2017
22:31:54
Так в ts это вроде как не работает? gcanti этот метод в flow юзал

Denis
11.07.2017
22:32:04
HKT fp-ts

Дмитрий
11.07.2017
22:32:29
flow-static-land в девичестве)

Denis
11.07.2017
22:32:39
решил RS написать на ts

Дмитрий
11.07.2017
22:33:12
В flow скоро opaque types будут

Denis
11.07.2017
22:33:12
type Algebra f a = f a -> a

Дмитрий
11.07.2017
22:33:22
Придётся ему обратно ливать))

Denis
11.07.2017
22:33:33
что будет?

Дмитрий
11.07.2017
22:34:11
opaque data type

Denis
11.07.2017
22:34:24
link?