
Kirill
06.06.2017
16:45:10
Спасибо за объяснение. Буду разбираться.


Yumi
06.06.2017
18:18:10


Denis
06.06.2017
18:25:04
что это вообще? что оно должно делать

Google

? animufag ?
06.06.2017
18:26:51
да, кстати забавно что чейнджер ничего не меняет

Kirill
07.06.2017
05:41:21
Да я просто сразу не подумал, что для булей вообще такой пайп не нужен. Всё ведь делается на бинарных операторах.
Просто бывают случаи, когда мы сверху объявляем состояние (переменную) с начальными данными и через if/else меняем это состояние. Мне показалось, что в этом случае пайпинг получается более оправданным и лёгким к расширению, если ты ориентируешься в ФП.

Vadim
07.06.2017
08:06:13
Можно ли где посмотреть примеры как использовать рамдовский Maybe в пайпах/композах?

Дмитрий
07.06.2017
08:09:26
Не юзай ramda-fantasy, она deprecated

Vadim
07.06.2017
08:10:01
В рамдовском repl используется ramda-fantasy?
Там сразу доступен Maybe

Дмитрий
07.06.2017
08:10:47
Да

Vadim
07.06.2017
08:11:02
Ну тогда какой Maybe лучше исползовать? И есть ли примеры его использования в пайпах?

Дмитрий
07.06.2017
08:11:16
Оч хороший вопрос))
Я до сих пор не могу определиться

Vadim
07.06.2017
08:11:41
Я просто пока не очень догоняю как метод "map" Maybe всунуть в пайп )

Дмитрий
07.06.2017
08:12:01
Есть текущий считай стандарт — sanctuary, но у меня она раз за разом вообще не заходит, ну неудобная какая то

Vadim
07.06.2017
08:12:35
Но даже если отвлечься от мейби. Просто как вставить в пайп метод объекта?

Google

Дмитрий
07.06.2017
08:12:49

Vadim
07.06.2017
08:13:04
Так примеры есть?
Как Maybe.map, например, использовать в пайпе?

Дмитрий
07.06.2017
08:13:20
Погоди с примерами, тут важно понять одну вещь
ramda для объектов fantasy-land — это как личные статические методы

Vadim
07.06.2017
08:14:15
ого

Дмитрий
07.06.2017
08:14:18
Проще говоря, рамдовский map просто будет использовать map метод объекта, если он есть)

Vadim
07.06.2017
08:14:35
Круто! Спасибо! Попробую )

Дмитрий
07.06.2017
08:14:37
Так же chain, of, filter и ещё куча всего


Vadim
07.06.2017
08:15:12
Круть!
Попробовал тут поиграться с Maybe (правда пока рамдовским). Для пробы взял задачу, о которой тут вчера вечером говорили
http://ramdajs.com/repl/?v=0.24.1#?const%20STATUS_LIST%20%3D%20%5B%27active%27%2C%20%27draft%27%5D%3B%0Aconst%20payload%20%3D%20%7B%0A%20%20state%3A%20true%2C%0A%20%20status%3A%20%27active%27%2C%0A%20%20newDataLength%3A%202%2C%0A%20%20canDelete%3A%20true%2C%0A%7D%3B%0A%0A%0Aconst%20getMaybe%20%3D%20%28pload%2C%20list%29%20%3D%3E%20%0A%20%20list.includes%28pload.status%29%20%3F%20Maybe.Just%28pload%29%20%3A%20Maybe.Just%28false%29%0A%20%0AgetMaybe%28payload%2C%20STATUS_LIST%29%0A%20%20.map%28%20chain%28assoc%28%27state%27%29%2C%20propSatisfies%28val%20%3D%3E%20val%20%3E%3D%201%2C%20%27newDataLength%27%29%29%20%29%0A%20%20.map%28%28%7B%20state%2C%20canDelete%20%7D%29%20%3D%3E%20state%20%26%26%20canDelete%29%0A%20%20.getOrElse%28%29%3B
Судя по документации, в их Maybe для создания последовательностей могут использоваться только методы map и chain


Дмитрий
07.06.2017
08:58:07
list.includes(pload.status) ? Maybe.Just(pload) : Maybe.Just(false)
Зачем ты так делаешь?
Это же ломает вообще весь смысл
Фича в том, что map не будет применяться к Nothing
То есть у тебя появляется возможность делать абсолютно безопасные операции без вечных проверок

Vadim
07.06.2017
08:59:20
Согласен )

Дмитрий
07.06.2017
08:59:21
Как только что-то идёт не так, все остальные операции последовательности просто не будут применяться к ставшему невалидным объекту

Vadim
07.06.2017
09:00:08
Да, я был неправ ) Сделал так что б в конце цепочки не приводить undefined к false. Но сейчас исправлю )

Google

Vadim
07.06.2017
09:01:57
Я не обратил внимания что getOrElse принимает дефолтное значение как параметр
Теперь корректно )
http://ramdajs.com/repl/?v=0.24.1#?const%20STATUS_LIST%20%3D%20%5B%27active%27%2C%20%27draft%27%5D%3B%0Aconst%20payload%20%3D%20%7B%0A%20%20state%3A%20true%2C%0A%20%20status%3A%20%27active%27%2C%0A%20%20newDataLength%3A%202%2C%0A%20%20canDelete%3A%20true%2C%0A%7D%3B%0A%0A%0Aconst%20getMaybe%20%3D%20%28pload%2C%20list%29%20%3D%3E%20%0A%20%20list.includes%28pload.status1%29%20%3F%20Maybe.Just%28pload%29%20%3A%20Maybe.Nothing%28%29%0A%20%0AgetMaybe%28payload%2C%20STATUS_LIST%29%0A%20%20.map%28%20chain%28assoc%28%27state%27%29%2C%20propSatisfies%28val%20%3D%3E%20val%20%3E%3D%201%2C%20%27newDataLength%27%29%29%20%29%0A%20%20.map%28%28%7B%20state%2C%20canDelete%20%7D%29%20%3D%3E%20state%20%26%26%20canDelete%29%0A%20%20.getOrElse%28false%29%3B

Дмитрий
07.06.2017
09:03:58
Ну да. в таком духе)

Vadim
07.06.2017
09:05:08
А где сказано что рамда фэнтази депрекейтед?

Vladimir
07.06.2017
09:05:24
сокращающая ссылки

Дмитрий
07.06.2017
09:05:36

Vadim
07.06.2017
09:05:36
Спасибо!

Vladimir
07.06.2017
09:05:46

Дмитрий
07.06.2017
09:08:25
Вообще мне больше всего жалко что они не хотят поддерживать все отдельные структуры данных из организации fantasy-land на гитхабе
Идеальный модульный подход. ставишь только то, что нужно

Vladimir
07.06.2017
09:09:35

Дмитрий
07.06.2017
09:09:44
В плане?

Vladimir
07.06.2017
09:10:02
лодаш сам в одной репе
при публикации публикуется сам лодаш и каждая функция отдельно

Дмитрий
07.06.2017
09:10:24
Аа
Ну технически мне в принципе не очень важно, как это будет реализовано, но они же просто все эти репы забросили, теперь каждый свой велосипед пишет
Я в том числе, потому что надоело(

Vadim
07.06.2017
09:22:32
На какую интересную вещь наткнулся https://github.com/gcanti/fp-ts
Я правда с алгебраическими типами пока дел не имел, но может покопаюсь попозже )
Когда немного подросту )

Google

Дмитрий
07.06.2017
09:23:17
Он вредина такая, с flow ливнул ?
Написал половину стека для алгебраических типов и ливнул
Приходится допиливать за него

Vadim
07.06.2017
09:24:05
Автор?

Дмитрий
07.06.2017
09:24:08
Да

Vadim
07.06.2017
09:24:35
Кстати, есть ли смысл полностью переходить на Sanctuary с ramda?

Дмитрий
07.06.2017
09:24:48
У него на протяжении очень долгого времени был flow, сделал на нём довольно внушительный стек с бабель плагинами, рантайм-валидацией и прочим

Admin
ERROR: S client not available

Vadim
07.06.2017
09:25:49
Есть ли вообще преимущества у ramda перед Sanctuary?
Я так понимаю нет? )

Дмитрий
07.06.2017
09:26:01
То есть для меня проект, в котором есть sanctuary и нет рамды — это нонсенс вообще)
Они не взаимозаменяемы и реализуют разные задачи

Vadim
07.06.2017
09:26:26
Ок, пока не читал доки
Покопаюсь там

Дмитрий
07.06.2017
09:26:34
Да и вообще

Vadim
07.06.2017
09:27:49
Можно ли к проекту модульно подключить только Maybe от Sanctuary?
Что б не тянуть всю либу

Дмитрий
07.06.2017
09:28:31
Неа

Google

Дмитрий
07.06.2017
09:28:46
На самом деле, если нужен один maybe, то проще его сделать самому
Посмотреть на либу fantasy-options и слегка подправить под современный daggy
То есть фактически, все репы организации fantasy-land — эти и есть отдельные такие объекты

Vadim
07.06.2017
09:29:54
Хотелось бы хорошо протестированную сборку функционала типа ramda-fantasy

Дмитрий
07.06.2017
09:30:02
Только их автор ливнул с этого вашего жс

Vadim
07.06.2017
09:30:08
)

Дмитрий
07.06.2017
09:30:14
Точнее я даже так скажу — реализация Maybe занимает 30 строк, а её хорошее тестирование — это соответствие спеке fantasy-land, которое заёмет ещё столько же
Я тут написал свою реализацию моделей с паттерн-матчингом, реализует вот такой список интерфейсов спеки
* - Semigroup
* - Setoid
* - Functor
* - Apply
* - Applicative
* - Chain
* - Monad
* - Extend
* - Comonad

Сергей
07.06.2017
09:33:26

? animufag ?
07.06.2017
09:44:20

Дмитрий
07.06.2017
09:50:10
Выложил куда-нибудь?
Не, сейчас чуть позже выложу. Я на самом деле не очень люблю выкладывать недоделанные проекты)
+extract — это просто вытащить содержание объекта

Yumi
07.06.2017
09:57:06
А, ниже уже написали. Сорри.

? animufag ?
07.06.2017
10:24:25

Denis
07.06.2017
10:35:31
сильные заявления, но проверять я конечно из не буду

Дмитрий
07.06.2017
10:39:13