
Vitaly
07.02.2018
14:02:08

Dmitry
07.02.2018
14:03:01
иметь коммон сенс, и понимать, что фримонады - шляпа
но это не точно

Leonid
07.02.2018
14:03:16
не шляпа конечно, но и не панацея

Google

Dmitry
07.02.2018
14:03:34
я за несколько раз так и не понял, какой от них профит.

Leonid
07.02.2018
14:03:41
/me посмотрел на тайпкласс Backend с 30ю методами

Andrei
07.02.2018
14:04:14

Dmitry
07.02.2018
14:04:31
да я их вот этими самыми руками сначала в проект притаскивал
а потом выпиливал

Andrei
07.02.2018
14:04:39
ой

Dmitry
07.02.2018
14:04:49
аналогичная история с turtle
две вещи, которые сначала запиливаешь, а потом выпиливаешь и так каждый раз

Aleksey
07.02.2018
14:05:13
Для комонад есть примеры с запиливанием Zipper'ов на оных. Ещё где-то была реализация Жизни конвеевской на комонадке

Mikhail
07.02.2018
14:05:27
вопрос: какое умное название у конструкции вида:
data Foo a b c
construct :: Option a -> Option b -> Option c -> Option Foo
?

Aleksey
07.02.2018
14:05:59
Э... выглядит, как liftA3

Denis
07.02.2018
14:06:16
это явно работа для аппликативного функтора

Vitaly
07.02.2018
14:06:38
Ну вот, скажем, Traversable, если аппликант не понимает его, сразу в бан?

Google

Dmitry
07.02.2018
14:08:37
неа

Aleksey
07.02.2018
14:08:54
Traversable можно понять по описанию класса. Даже если ты новичок, но с тайпклассами, как концепцией знаком и про Monoid знаешь.

kana
07.02.2018
14:09:13

Denis
07.02.2018
14:09:32

Vitaly
07.02.2018
14:10:23
Начинающий от f t a и t f a сдохнет сразу

Dmitry
07.02.2018
14:11:00
менее опытный может спросить у более опытного или здесь в чате - не нужен ли мне траверсабл и как его сюда впилить

Vitaly
07.02.2018
14:11:31

Dmitry
07.02.2018
14:12:06
заметим, что из этих требований вообще легко удаляется слово haskell
если оно вообще в нём присутствует.

Denis
07.02.2018
14:12:22
эти требования к любому ЯП применяются

Vitaly
07.02.2018
14:12:27
ага

Denis
07.02.2018
14:12:30
хаскелль тут ничем не примечателен на мой взгляд
только почему-то соискатели не всегда так думают

Vitaly
07.02.2018
14:13:00
я старый враг примечательности хаскеля!

Anatolii
07.02.2018
14:13:40
тут просто в чате когда начинают обсуждать высокие вещи - то новички сразу и разбегаются

Vitaly
07.02.2018
14:13:41
соискатели пытаются пониманием комонад хвастаться?

Denis
07.02.2018
14:15:23
я стараюсь избегать, ведь можно самому поплыть!
мне комонады для написания программ в жизни были нужны 0 раз
но это я наверное просто не знаю как их варить

Google

Leonid
07.02.2018
14:16:53
А как же комонад костейт коалгебра?

Denis
07.02.2018
14:17:05
кококо сокращенно

Vitaly
07.02.2018
14:17:23
ку-клукс-клан

kana
07.02.2018
14:18:04
фриман вот говорит, что комонадами хорошо UI моделировать

Denis
07.02.2018
14:19:01
в пурскрипте сектант каждый первый

Leonid
07.02.2018
14:19:11
Фриман пруф оф концепт либу так и не запилил

Denis
07.02.2018
14:19:14
у них halogen самая популярная либа для UI

Leonid
07.02.2018
14:20:06
Галоген не такой и страшный теперь. Было хуже.

Denis
07.02.2018
14:29:49

Leonid
07.02.2018
14:30:41

Denis
07.02.2018
14:31:16
А гуи?
в планах (на линзах же как раз можно сделать оптический gui)

Leonid
07.02.2018
14:33:34
разработаю ИИ чтоб на профункторах гуи

Denis
07.02.2018
14:34:37
я спросил почему нельзя сделать такие эффекты в хаскелл (он написал)
The Day convolution bit is possible, but the trick here is to represent an n-ary Day convolution using row polymorphism.
вообще я пока не могу понять на должном уровне Day Convolution
а это прокаченный Day Convolution https://github.com/paf31/purescript-smash/blob/master/src/Data/Smash.purs#L53

Александр
07.02.2018
14:41:53
На PureScritp'е мы сейчас Web UI делаем с помощью портированного нашим коллегой reflex-dom:
https://github.com/restaumatic/purescript-specular

Denis
07.02.2018
14:42:53
хм
а зачем портировать рефлекс если есть почти такой же purescript-behaviors?

Александр
07.02.2018
14:44:00
Это лучше у коллеги спросить. Может, ему не хватало самовыражения.

? animufag ?
07.02.2018
14:45:30
а вот например в halogen тоже вроде поначалу сигналы были и всякое фрп. в 0.4 вроде
чому они отказались?

Google

A64m
07.02.2018
14:50:54

Dmitry
07.02.2018
14:51:22
нормально собираться и собирать проекты
ставиться из каких-то источников
нормальных.
находиться под активной разработкой, работать над компактизацией кода и оптимизацией

Denis
07.02.2018
14:51:53

Dmitry
07.02.2018
14:51:56
web assembly ?
я что-то не уверен насчёт "нормально", у нас сборка одного проекта даже с никсом занимает часов пять

Denis
07.02.2018
14:52:25
web assembly ?
так ghcjs и так собирает некую стейт машину что работает быстро

Dmitry
07.02.2018
14:52:38
и от этого возникает сильнейшее недовольство заказчика, например

A64m
07.02.2018
14:52:46

Dmitry
07.02.2018
14:53:11
короче всё это не выглядит, как что-то надежное / годное, а выглядит как маргинальное ответвление, это если еще сам ghc не считать чем-то маргинальным

Александр
07.02.2018
14:53:23
не шляпа конечно, но и не панацея
Free монады - очень нужная концепция. Free-монадические языки решают ту же проблему, которую решают ООПшные интерфейсы, но в чисто функциональном стиле. Проблема называется коротко: Inversion of Control.
Free-монады можно использовать в друх вариантах:
- scenario-oriented eDSL
- API-oriented eDSL
Scenario-oriented eDSLs - это такие языки, на которых вы пишете бизнес-логику. Выражают предметную область, процессы и данные в ней. Такой DSL обычно спроектирован так, чтобы его методы были композабельные.
API-oriented eDSL - это интерфейс к подсистеме. Композабельности методов относительно друг друга не требует, может представлять просто набор методов, абстрагирующих сервис.

Denis
07.02.2018
14:54:09

Dmitry
07.02.2018
14:55:10
когда я их смотрел, то столкнулся с проблемой уже на уровне реализации ветвлений

A64m
07.02.2018
14:55:17

Dmitry
07.02.2018
14:55:36
вот именно это и напрягает

A64m
07.02.2018
14:56:07
компиляция в вебасембли, может быть, ghcjs со временем убьет, но по-моему, и само будущее вебасембли под вопросом

Александр
07.02.2018
14:56:19

Dmitry
07.02.2018
14:56:40
с тем, что было неочевидно, как делать ветвления в сценариях.

Google

Александр
07.02.2018
14:56:57
Ну просто if или case

Dmitry
07.02.2018
14:56:58
если где-то есть пример - я бы взглянул. вроде бы очевидная вещь, если мы говорим про dsl

Александр
07.02.2018
14:57:18
У меня есть кой-какие примеры, да

Dmitry
07.02.2018
14:57:29
доступны что бы посмотреть?
ну опять же, можно спросить например @qnikst почему они у себя не используют фри монады, а используют подход, о котром он рассказывал

Александр
07.02.2018
14:58:25

Dmitry
07.02.2018
14:59:02
хм, пожалуй, я бы посмотрел на какие-то более полные примеры и в контексте
может быть, уже есть более лучшие статьи по фримонадам, чем были год - два назад

Александр
07.02.2018
14:59:33
доступны что бы посмотреть?
Да, у меня же для этого целый showcase проект есть (сопровождает книгу):
https://github.com/graninas/Andromeda/blob/master/test/Test/ControlProgramSpec.hs

Dmitry
07.02.2018
15:00:29
что-то тут какое-то недопонимание.
явно.

Александр
07.02.2018
15:00:39
Поясните тогда

Dmitry
07.02.2018
15:00:50
ну это надо найти статью, где описывалось применение

Denis
07.02.2018
15:00:56
мне кажется тут про разное

Dmitry
07.02.2018
15:01:35
@qnikst рассказывал, как они композят разные системы - это вот реализация явных API
будем считать, что я ничего не знаю про них - это почти правда, я посмотрел, попробовал использорвать и забыл - и пытаюсь их адаптировать.

Александр
07.02.2018
15:02:58
Есть еще более продвинутый вариант - freer-монады. Мы их как раз сейчас в проекте используем.

Dmitry
07.02.2018
15:03:11
т.е что решают, как решают, почему это лучше, чем решение без них
т.е то, о чем была статья - это просто реализация некоего Dsl, интерпретация которого могла меняться в зависимости от.