
Denis
29.05.2017
13:50:26
Я в эту сторону не ходил ) но надо попробовать

Oleg
29.05.2017
13:51:26
Думаю, жизнеспособный подход, но не раньше, чем появятся implicit function types

Denis
29.05.2017
14:02:41
type Monad[F] = (Pure[F], FlatMap[F])

Google

Denis
29.05.2017
14:02:43
о да

Oleg
29.05.2017
14:02:48
т.е. проецируя на скалу ты мог бы сказать
type Monad[F] = (FlatMap[F] , Apply[F], Pure[F])
и потом просто заюзать

Denis
29.05.2017
14:03:49
прикольно

KrivdaTheTriewe
29.05.2017
14:04:38
Почему в мониксе Task[Throwable] бросает исключение ?

Denis
29.05.2017
14:05:02
в какой момент? :)

Aleksei
29.05.2017
14:05:17
забавно )

KrivdaTheTriewe
29.05.2017
14:08:05
Есть такое val k = for(i<-0 until 100) yeild Task { что -то там }.timeout(100 miliseconds).flatmap(Task(1))
val task = Task
.gatherUnordered(k)
.runAsync
.flatMap(x => Future(x.sum))
Await.result(task, Duration.Inf)
task.foreach(println)
Я правда спал час, поэтому не кидайтесь камнями сильно

Alexey
29.05.2017
18:28:51
Интересная статья о том как называть типы и переменные - http://degoes.net/articles/insufficiently-polymorphic Юрий

Alex
29.05.2017
18:29:11
недостаточно полиморфный юрий

Denis
29.05.2017
18:33:34

Oleksandr
29.05.2017
18:34:45

Vadim
29.05.2017
18:57:21
вроде же полгода назад уже об этом говорили)

Google

Nikita
29.05.2017
21:04:39
Интересная статья о том как называть типы и переменные - http://degoes.net/articles/insufficiently-polymorphic Юрий
спасибо большое за ссылку на статью, лично для меня она расставила некоторые важные вещи на свои места, сначала я был скептично настроен, но почитав - проникся, а от комментов стало еще понятнее (http://disq.us/p/1f5mcj2). Видимо где-то на пути мне в голову вдолбилось что делать очень абстрактные/общие решения - это как раз зря тратить время и решать больше проблем чем тебе нужно (+ как правило еще и дольше), в сравнении более конкретным решением, и такая интуиция продержалась во мне дольше чем нужно... а эта статья показала совсем обратное. теперь надо следить за реальными примерами в работе, искать правильное время/место для использования подобных абстракций. Есть ли какие-то ссылки на примеры из этой темы? ну типа есть такая-то фича, берем выкидываем ее детали, остается суть которая мапится на какой-то концепт из ФП


Arthur
30.05.2017
05:55:55
Хеййоу, есть кто на скаладейз едет? Может скооперируемся на месте? Толпой явно веселее город смотреть

Aleksei
30.05.2017
06:04:10
В Копенгаген?
Блин она сегодня началась лол

Arthur
30.05.2017
06:14:20
Ну не совсем сегодня но да


Alexander
30.05.2017
06:46:50
спасибо большое за ссылку на статью, лично для меня она расставила некоторые важные вещи на свои места, сначала я был скептично настроен, но почитав - проникся, а от комментов стало еще понятнее (http://disq.us/p/1f5mcj2). Видимо где-то на пути мне в голову вдолбилось что делать очень абстрактные/общие решения - это как раз зря тратить время и решать больше проблем чем тебе нужно (+ как правило еще и дольше), в сравнении более конкретным решением, и такая интуиция продержалась во мне дольше чем нужно... а эта статья показала совсем обратное. теперь надо следить за реальными примерами в работе, искать правильное время/место для использования подобных абстракций. Есть ли какие-то ссылки на примеры из этой темы? ну типа есть такая-то фича, берем выкидываем ее детали, остается суть которая мапится на какой-то концепт из ФП
У меня есть пример недавний.
Была функция, которая работала с набором бизнес специфик сущностей (вытащить задачи в соответствии с разными условиями). Добавляя новый код я заметил, что в нескольких местах делаются похожие вещи. Я это вытащил в отдельные функции и получил набор типовых "алгоритмов" работающих с множествами.
Сами эти "алгоритмы" были довольно простыми и понятными. Т.е. в условной функции getIssue(params) вместо case specific кода были другие функции которые дергали всякие intersect и проч.
Правда это не совсем про ФП.


Oleg
30.05.2017
07:07:37
Правда это не совсем про ФП.
Whether in OOP or FP, the effect is the same: making the code more polymorphic reduces the space of possible implementations.

Alexander
30.05.2017
07:09:44

Kirill
30.05.2017
07:12:13
99% статей в этих ваших интернетах про фп с абстрактными примерами надуманных нереалистичных проблем, которые авторы героически решают манатками, вот у людей вопросы и возникают само собой

Oleg
30.05.2017
07:12:39

Denis
30.05.2017
07:14:24

Oleg
30.05.2017
07:14:58

Kirill
30.05.2017
07:15:55

Alexander
30.05.2017
07:15:58

Kirill
30.05.2017
07:16:26

Oleg
30.05.2017
07:18:12

Diemust
30.05.2017
07:18:30
плюсую вот это

Alexander
30.05.2017
07:18:30

Google

Kirill
30.05.2017
07:21:14
>>> Был код
>>> Сделал код лучше
>>> Написал статью про основную идею
>>> Куча кода, никак не относящегося к идее
>>> Убрал лишний код
....
>>> Anonymous commenter : Абстрактно и надумано!
Во, так бы сразу, спасибо. ну да, по большей части согласен с тобой, что люди часто переоценивают статьи, но обычно попадаются статьи, где начинается с "давайте рассмотрим монаду XXX, чтобы её применить, мы реализуем, например, YYY, ....., profit, монада XXX просто супер!" То есть пример именно что придумывается и подгоняется именно чтобы написать статью про монаду XXX, а не как ты сказал - решение реальной проблемы.


Oleg
30.05.2017
07:22:37
Во, так бы сразу, спасибо. ну да, по большей части согласен с тобой, что люди часто переоценивают статьи, но обычно попадаются статьи, где начинается с "давайте рассмотрим монаду XXX, чтобы её применить, мы реализуем, например, YYY, ....., profit, монада XXX просто супер!" То есть пример именно что придумывается и подгоняется именно чтобы написать статью про монаду XXX, а не как ты сказал - решение реальной проблемы.
Потому что в реальной жизни чувак рефакторил две недели. Чтобы объяснить, что он там рефакторил, нужно скинуть всю джиру, вики и снэпшот мозга постановщиков.

Nikolay
30.05.2017
07:24:13

Kirill
30.05.2017
07:24:14
Да, но я, повторюсь, говорю о том, что в большинстве примеры придумываются не из той ситуации, которую ты описал, а придумываются искусственные примеры *специально* для написания статьи про монаду. Твой пример - это хороший кейс. То о чем говорю я - не очень.

Борис
30.05.2017
07:32:13
Да в целом в статьях не любят вещать про область применимости технологии, не только про фп так

Denis
30.05.2017
07:37:29

Nikita
30.05.2017
07:39:01
я понимаю, что для того, чтобы мапить некий абстрактный концепт на твою конкретную проблему, тебе нужно:
1. знать абстрактные концепты
2. уметь правильно отбрасывать детали конкретной задачи, чтобы получить некий абстрактный концепт
3. уметь сравнивать свою абстракцию с общеизвестным концептом


Alexey
30.05.2017
08:07:43
чувак психанул
https://habrahabr.ru/company/tinkoff/blog/323682/#comment_10240590

Oleksandr
30.05.2017
08:10:46
прямо мои мысли, только он все развернул)

Alexey
30.05.2017
08:11:01
+1

Oleg
30.05.2017
08:12:01
Функциональное программирование обычно обладает свойством, что одну и ту же задачу в нём нельзя решить разными способами.WAT

Denis
30.05.2017
08:12:05
Ниче не понял
Это как давний спор про номинальные и структурные типы. Что лучше использовать — (Double, Double, Double) или final case class Gas(pressure: Double, temperature: Double, volume: Double). Сторонники ФП предпочитают первый тип,
ок
какие такие?

Oleksandr
30.05.2017
08:12:31

Oleg
30.05.2017
08:12:46
Это какая-то вырезка из дзен питона

Google

Alexey
30.05.2017
08:13:06

Oleksandr
30.05.2017
08:13:12
*мне кажется, что* ...

Alexey
30.05.2017
08:14:25
ну вобщем далеко не всё, что он написал - херня

Denis
30.05.2017
08:14:26
Об этом можно судить по столь нежно любимым всеми функциональщиками коммутативным диаграммам. Там есть пунктирный подвид стрелочек — «существует единственный морфизм». На этом единстве и построена вся теория. Произведение и копроизведение типов так и определяется — через единственность (с точностью до изоморфизмов). и что?
:q!

Oleg
30.05.2017
08:16:51
Каждый абзац - нелепый вброс

Denis
30.05.2017
08:17:26
даже на хабр кинул
о чем наверное пожалею
уже :)

Oleg
30.05.2017
08:17:42
У меня ощущение, что я должен знать этого человека, но...
Рисковый вы парень, делать import сats._

Nikita
30.05.2017
08:18:24

Oleg
30.05.2017
08:18:26
Мне вот всегда подобное страшно, каких ещё имплиситных трансформацией принесёт с собой библиотека.

Denis
30.05.2017
08:19:00
Что день грядущий нам готовит )

Oleksandr
30.05.2017
08:19:07
ответьте ему там, чего тут-то байты гонять

Alexey
30.05.2017
08:19:15
+

Oleg
30.05.2017
08:19:19

Oleksandr
30.05.2017
08:19:28

Alexey
30.05.2017
08:19:43
тем более под статьей про скалу, пффф

Oleg
30.05.2017
08:19:45

Google

Oleg
30.05.2017
08:20:00
писать и кидать ссылки в чат

Denis
30.05.2017
08:20:10
:)

Aleksei
30.05.2017
08:21:19
блин вот он ведь не поленился такой огромный комментарий написать
почти статья

Denis
30.05.2017
08:22:28
И неочем
основных тезисов я так и не понял

Aleksei
30.05.2017
08:23:19
я тоже не очень всек. особенно про тапл и кейс класс насмешило

Oleg
30.05.2017
08:23:56

Denis
30.05.2017
08:24:27
1. скала не FP
2. Он знает про universal construction
3. Юзал какую то ужасную либу
4. ООП лучше в REPL
5. Не понимает разницы между туплами и кейс классами
6. Скала не FP

Aleksei
30.05.2017
08:24:52
2 - 5 можно убирать

Denis
30.05.2017
08:25:04
и капсом остальное

Oleg
30.05.2017
08:28:31
Поэтому автор полагает, что любителям ФП больше нравятся туплы

Daniel
30.05.2017
08:30:53

Oleg
30.05.2017
08:31:08
У меня ощущение, что он здесь есть

Aleksei
30.05.2017
08:31:56
Вполне

Denis
30.05.2017
08:33:03
Ребзя, а что Java правда поддерживает Polymorphic SAM ?
https://issues.scala-lang.org/browse/SI-9916