@frp_ru

Страница 56 из 420
Сергей
03.05.2017
15:38:07
вопрос конечно зачем имея null делать maybe открыт
чтобы не делать постоянные проверки на isNull

ну так maybe ж в js нет
зато есть реализация

Дмитрий
03.05.2017
15:38:27
ну так maybe ж в js нет
И классов в js тоже нет

Aleh
03.05.2017
15:38:42
спека с тобой несогласна

Google
Aleh
03.05.2017
15:38:47
да и классы особо не нужны

Дмитрий
03.05.2017
15:39:03
Только прототипы и isNaN спасут js сообщество

Aleh
03.05.2017
15:39:54
чтобы не делать постоянные проверки на isNull
так, в чем отличие type Maybe<T> = T | null от type Maybe<T> = Just<T> | Nothing?

Karen
03.05.2017
15:39:56
Number.isNaN

Aleh
03.05.2017
15:41:06
и там, и там значение в контейнере и напрямую обращаться к нему нельзя. И там, и там легко пишется функция(fmap), которая применяет функцию к значению в контейнере

Дмитрий
03.05.2017
15:42:34
Так в чём же отличие классов и нормального реального объявления классов через прототипы? И там и там получаются объекты создаваемые через new

Aleh
03.05.2017
15:42:55
через прототипы чуть больше писать надо

а так разницы нет, если мы про жс

Дмитрий
03.05.2017
15:43:34
Вот ты и сам ответил на свой вопрос)

Aleh
03.05.2017
15:43:46
я ответил на твой вопрос, не?)

Дмитрий
03.05.2017
15:43:52
не

Aleh
03.05.2017
15:44:10
тогда можешь чуть подробнее?(

Yumi
03.05.2017
15:44:37
Я понял ваши ответы друг другу, все нормально.

Google
Aleh
03.05.2017
15:45:33
и там, и там значение в контейнере и напрямую обращаться к нему нельзя. И там, и там легко пишется функция(fmap), которая применяет функцию к значению в контейнере
только в случае с null почти все уже есть в языке, а в случае с Maybe Just Nothing надо выдумывать спеки и писать библиотеки без какого-либо выигрыша в будущем

Yumi
03.05.2017
15:45:57
Разницы нет, значит без разницы что использовать и разницы нет, значит не нужно ничего нового придумывать.

Сергей
03.05.2017
15:46:32
https://gist.github.com/LestaD/5292fa7dd96c44c69c7e6ba91e3309b1

andretshurotshka?❄️кде
03.05.2017
16:19:10
Aleh
03.05.2017
16:26:42
да, класс короч набрали)

Yumi
03.05.2017
20:16:08
Почему три одинаковых?:)

Aleh
03.05.2017
20:32:21
https://habrahabr.ru/post/327913/

andretshurotshka?❄️кде
04.05.2017
02:28:34
Vadim
04.05.2017
08:42:11
Скажите, а что означает "dispatches to a method..." в ramda? Вот например из описания метода clone: Creates a deep copy of the value which may contain (nested) Arrays and Objects, Numbers, Strings, Booleans and Dates. Functions are assigned by reference rather than copied Dispatches to a clone method if present.

Что означает этот "Dispatches to a clone method if present"? Вообще подобная штука (dispatches) указана для очень многих методов ramda

И как я могу это использовать?

Karen
04.05.2017
08:46:12
https://github.com/ramda/ramda/blob/v0.23.0/src/clone.js#L28

если передаешь объект и у объекта есть метод clone()

то используется эта функция

насколько я понимаю это надо для случаев когда ты хочешь гибридный клон

какие то пропы клонировать какие-то не клонировать

а передавать по референсу

внутри клонируемого объекта

Vadim
04.05.2017
08:52:04
Ух! Спасибо! Странно что примеров такого использования нигде не встречается )

Google
Vadim
04.05.2017
08:56:40
Да, так оно и работает на всех методах что проверил

Не знаю правда зачем может быть нужна такая кастомизация. Ибо любые потенциальные задачи, которые вижу решаются более элегантно (цепочками методов ramda)

Karen
04.05.2017
08:58:38
хз

плюшка от рамды

Vadim
04.05.2017
09:37:49
Встречал ли кто более полный справочник чем этот? https://github.com/ramda/ramda/wiki/What-Function-Should-I-Use%3F

Просто там представлены ДАЛЕКО не все методы

Karen
04.05.2017
09:38:27
о спс

я даже не удосужился в вики заглянуть разок : DD

молодцы сделали как у Rx

Алексей
04.05.2017
09:45:12
молодцы сделали как у Rx
А где у Rx это подсмотреть?

Vadim
04.05.2017
09:45:38
https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/which-static.md https://github.com/Reactive-Extensions/RxJS/blob/master/doc/gettingstarted/which-instance.md

Karen
04.05.2017
09:47:44
http://reactivex.io/rxjs/ вот тут еще в низу страницу

Vadim
04.05.2017
10:01:27
Еще вопрос по рамда. Есть в там метод pipeK, который отличается (если я правильно понял) от обычного pipe только тем, что каждая используемая в нем функция должна возвращать один и тот же тип. Короче, это строго "однотипный" pipe. Вопрос: когда это вообще бывает нужно?

Karen
04.05.2017
10:02:23
легче всего нагуглить на gist.github.com

Vadim
04.05.2017
10:05:37
Либо не понял как там это искать, либо просто ничего нет :/

Karen
04.05.2017
10:06:35
https://gist.github.com/search?l=JavaScript&q=pipeK%28&ref=searchresults&utf8=%E2%9C%93

справа теги юзай чтоб скоуп поиска сжать

да действительно ничего адекватного

Vadim
04.05.2017
10:08:46
К тому же у меня вопрос по предназначению метода (то-есть, ЗАЧЕМ его использовать), а не по тому КАК его использовать.

Если чисто логически, то нафиг может быть нужен строго типизированный пайп или компоуз?

Google
Vadim
04.05.2017
10:14:45
Судя по всему, да :/

Karen
04.05.2017
10:15:36
вот же

http://reactivex.io/rxjs/ вот тут еще в низу страницу

внизу страницы селекторы

вот гитхаб 5ой

https://github.com/ReactiveX/RxJS

только что обнаружил sanctuary js

: D

походу оно в мейнстриме юзать рамду с санкчуари

Алексей
04.05.2017
10:23:04
http://reactivex.io/rxjs/ вот тут еще в низу страницу
Да, но немного не то, хотелось бы конечно табилицей - но сойдет.

Vadim
04.05.2017
10:23:36
Для таблицы тогда может помочь это https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md

Я тоже предпочитаю видеть все сразу )

У меня вообще создается впечатление что ramda частично состоит из методов, которые не просто редко кем используются, а которые вообще практически никогда ни кем не применялись в деле )

Дмитрий
04.05.2017
10:45:59
не понимаю !== не используют

Не знаю правда зачем может быть нужна такая кастомизация. Ибо любые потенциальные задачи, которые вижу решаются более элегантно (цепочками методов ramda)
Этот диспатч есть у методов согласно fantasy land и сделан для гибкого интеропа, который может дать гибкость гораздо более мощную, чем кажется на первый взгляд

Если чисто логически, то нафиг может быть нужен строго типизированный пайп или компоуз?
Это значит, что эта функция гарантированно возвращает именно тот же тип, что и был на входе, из чего следует вывод о её полной типобезопасности. Более того, по фп законам это означает, что функция может взять ЛЮБОЙ тип, сделает свои преобразования и вернёт именно его же

Aleh
04.05.2017
10:50:52
чет не уловил почему полная типобезопасность следует из возврата того же типа, что и на входе

Дмитрий
04.05.2017
10:51:13
Ну вот так вот

Фп типы имеют такое свойство

Google
Aleh
04.05.2017
10:51:40
что такое "фп типы"?

а типизация нужна, чтобы отлавливать ошибки в compile-time // ваш КО

andretshurotshka?❄️кде
04.05.2017
10:53:04
хз)

Aleh
04.05.2017
10:54:40
ADT наверно
наверн)

ну все равно не понимаю, чем a -> a безопаснее какого-нибудь a -> f a

и что значит безопасность вообще в этом ключе

Дмитрий
04.05.2017
10:57:33
Если сложить вместе два числа, то каким типом будет обладать результат?

Aleh
04.05.2017
10:58:08
результат сложения? Вероятно тоже число

Дмитрий
04.05.2017
10:58:30
А почему ты в этом уверен?

Aleh
04.05.2017
10:58:32
Num a => a -> a -> a

Дмитрий
04.05.2017
10:58:37
Воот

Aleh
04.05.2017
10:58:42
так что?

Дмитрий
04.05.2017
10:58:56
Только не а, а конкретно Number -> Number -> Number

Aleh
04.05.2017
10:59:03
нет

не конкретно Number -> Number -> Number

в этом ж смысл

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