
andretshurotshka?❄️кде
15.02.2018
18:20:16
олд
https://github.com/enkimute/ganja.js
https://github.com/staltz/callbag-to-awaitable
а че можно файл назвать readme.js ?)

Google

andretshurotshka?❄️кде
15.02.2018
19:25:36
https://github.com/joshburgess/react-redux-most-boilerplate

Denis
15.02.2018
19:31:16
ох е https://github.com/enkimute/ganja.js/blob/master/ganja.js#L127

andretshurotshka?❄️кде
15.02.2018
19:31:37
kjk

Vasiliy
15.02.2018
19:32:02
это кодогенерация я надеюсь

illiatshurotshka❄️
15.02.2018
19:32:45

Kirill
15.02.2018
20:55:56
Don't worry, be Haskell

Denis
15.02.2018
21:58:07
ох https://github.com/mckayb/phantasy-recursion-schemes

Kelin
15.02.2018
22:08:45
пиздец
че-то давно я не видел пхп код вообще
иии
он ужасен, скажу я вам

Sergey
15.02.2018
22:17:22
Ребят привет. Изучаю хаскель, пока прочел основы и только дошел до монад. Пока узнал что монады это конструкторы типа, и вот вопрос - как эти монады представляются в жс, в котором нет подобной системы типов? Мне сложно провести аналогию монад хаскеля в жс

kana
15.02.2018
22:18:38

Google

? animufag ?
15.02.2018
22:18:45
ну можно по-разному к ним относиться
но смотреть на них как на конструктор типа (вообще можно ли?) не очень

kana
15.02.2018
22:18:47
на самом деле и в хаскеле правильные монады не создать)

? animufag ?
15.02.2018
22:19:02
а что

Sergey
15.02.2018
22:19:29

? animufag ?
15.02.2018
22:19:33
это многозначное утверждение

kana
15.02.2018
22:19:47

? animufag ?
15.02.2018
22:19:58

Denis
15.02.2018
22:20:03
+ agda

Sergey
15.02.2018
22:20:28

? animufag ?
15.02.2018
22:20:41
ну блин поясни
ты про законы?

kana
15.02.2018
22:21:07

? animufag ?
15.02.2018
22:22:20
тип чтобы f a -> t b?

kana
15.02.2018
22:26:03
что я имел в виду - в хаскеле у нас есть только одна категория, поэтому та монада, что там есть, это не монада в общем смысле, а специализированное определение, а именно:
"моноид в категории эндофункторов Hask -> Hask"

? animufag ?
15.02.2018
22:27:16
ааа ээх. всегда думал чтоэто какой-то метахаскель
постхаскель
и не вдавался
да и сейчас не буду вдаваться. зачем портить впечатление

Denis
15.02.2018
22:28:02
ну так монада и в ТК работает только в категории эндофункторов
а вот функтор да

Google

Sergey
15.02.2018
22:29:27
А имеет ли смысл использовать монады в жс? И возможно ли? Или оно там не надо?

Kelin
15.02.2018
22:29:54
вот я что-то поигрался-поигрался и забил в итоге
ну сейчас кана расскажет

kana
15.02.2018
22:30:00

Denis
15.02.2018
22:30:09
это да

kana
15.02.2018
22:30:51

Sergey
15.02.2018
22:31:44
Без реселекта

kana
15.02.2018
22:32:20
ладно, тогда можно промисы как популярный пример (который мне не нравится совсем)
в отличии от хаскеля, тут мы монадой будем называть генериковый класс с методами
- map
- static of
- ap
- chain

Kelin
15.02.2018
22:33:34
промисы омг
адовый минимально возможный вариант

Denis
15.02.2018
22:34:31
можно провести аналогии с rx/most/bacon/etc

kana
15.02.2018
22:35:32
x :: Promise<T>
- это наш map
- x.then :: (T => G) => Promise<G>
- это chain
- x.then :: (T => Promise<G>) => Promise<G>
- это of
- Promise.resolve :: T => Promise<T>
- ap нету

Sergey
15.02.2018
22:36:33

Kelin
15.02.2018
22:39:38
меня блять убивает
почему then это map, я до сих пор не вкуриваю, серьезно

Дмитрий
15.02.2018
22:41:17

kana
15.02.2018
22:41:55
Спасибо
но лучше какой простой Reader реализовать и все

Google

kana
15.02.2018
22:41:58
class Reader<E, A> {
value: E => A;
constructor(value: E => A) {
this.value = value;
}
static of(x: A): Reader<E, A> {
return new Reader((env: E) => x);
}
run(env: E): A {
return this.value(env);
}
map<B>(f: A => B): Reader<E, B> {
return new Reader((env: E) => {
return f(this.run(env));
});
}
contramap<U>(f: U => E): Reader<U, A> {
return new Reader((env: U) => {
return this.run(f(env));
});
}
ap<B>(m: Reader<E, (x: A) => B>): Reader<E, B> {
return new Reader((env: E) => {
const f = m.run(env);
const x = this.run(env);
return f(x);
});
}
chain<B>(f: A => Reader<E, B>): Reader<E, B> {
return new Reader((env: E) => {
return f(this.run(env)).run(env);
});
}
}

Дмитрий
15.02.2018
22:43:54
Знатно мне порвало шаблон, когда я попытался сделать contramap для ридера)

kana
15.02.2018
22:47:21
добавил в пример выше contramap, теперь это профунктор в точности до изоморфизма
контрамап этот неверный по сигнатуре (должено контрамапать последний генерик), но это не так важно в системе типов без HKT

?
15.02.2018
22:53:41
На каких ресурсах вы учитесь/лись фп?

kana
15.02.2018
22:55:24
их много, читал все статьи подряд. Начало было с примитивных статей в медиума типа "фп на жс за 5 минут" и хаскель

?
15.02.2018
22:55:45
Спасиб

kana
15.02.2018
22:56:35

?
15.02.2018
22:57:33
Схоронил

kana
15.02.2018
22:58:05
они очень примитивны, должен сказать, но тогда я только-только начинал изучать фп и было довольно интересно
эх, всего год назад, надо же

?
15.02.2018
22:58:25
У меня мозг тоже примитивен, мне как раз подходит

Dmitriy
15.02.2018
23:10:30
Я пришел на работу будучи джуном и мне сказали что теперь ты пишешь на хаскеле
Но потом свичнулись на эрланг потому что быдло

kana
15.02.2018
23:11:10
фп не асилили, взяли императивный эрланг

Dmitriy
15.02.2018
23:11:42
Конечно

? animufag ?
15.02.2018
23:15:08

Dmitriy
15.02.2018
23:15:22
Подкупило стабильностью OTP
Но потом некоторое время злобно наебались с нифами
И забили на них хуй

Google

Dmitriy
15.02.2018
23:16:28
Но это был r13 или r12 эрланг, там были с этим косяки

? animufag ?
15.02.2018
23:16:53
а оно вообще нужно было? тип на хаскеле брали клаудхаскель?

Dmitriy
15.02.2018
23:17:20
Ключевой момент стабильность и проверенность в серьезном проде
На этом добре бабло каталось

? animufag ?
15.02.2018
23:17:34
обычно прост те кто выбирают эрланг сразу знают что им нужен эриланг
даже не смотрят что там за язык

Dmitriy
15.02.2018
23:17:47
Да, оно так и было
Ну вот выбор оказался хорошим

Kelin
15.02.2018
23:18:26

Dmitriy
15.02.2018
23:18:39
Есть конечно дико-бесящие моменты

Kelin
15.02.2018
23:18:44
это разве что flatMap к массиву

Dmitriy
15.02.2018
23:19:04
Особенно ебет .appup писать

Kelin
15.02.2018
23:19:18
then и от возвращенной обычной функции, и от промиса вернет промис
map же от элемента массива обычного и массива в массиве вернет разное
не?
или я не о том

Dmitriy
15.02.2018
23:19:36
Ладно, хватит императивщины в этом чате) Спасибо за внимание.

Дмитрий
15.02.2018
23:21:04
Я просто пробовал и представлять в той же форме — складывая функции в массив и в результате обнаруживаю что нужно бегать соединять одно с другим
В последней строчке E реально один и тот же, чисто по логике. И в середине списка я его ловить уже не вывожу)

kana
15.02.2018
23:23:42
на третьей строчке я не понял твой формализм