
Alexander
10.10.2018
09:20:41
например CanThrow 'Bla

Anton
10.10.2018
09:20:52

Dmitry
10.10.2018
09:20:58

Google

Alexander
10.10.2018
09:22:30
а сервант умеет в рамл?

Alexander
10.10.2018
09:24:05

Anton
10.10.2018
09:24:14
да

Alexander
10.10.2018
09:24:21
а норм тогда
при этом пользовательском уровне, в этом фишка

Anton
10.10.2018
09:24:57
servant-generic отвечает только за преобразование servant types <=> структура

Alexander
10.10.2018
09:27:07
а понял, как оно работает

Leonid
10.10.2018
09:27:22
сколько нужно времени и памяти для servant-generic?

Alexander
10.10.2018
10:19:51
https://ghc.haskell.org/trac/ghc/wiki/Performance/Tests
CC @A64m_qb0 никто не хочет поконтрибьютить с предложениями?
хотя не там просто хотят формат текущей поменять
т.е. останется бестолковым

Google

A64m
10.10.2018
10:24:59
они хотят, чтоб изменения ничего не значащих измерений было проще анализировать

Alexander
10.10.2018
10:26:36
да
чего-то сегодня бекендсикрета мало
: (

kana
10.10.2018
10:46:40

Александр
10.10.2018
10:48:22
В ООП-языках ОО-интерфейсы тоже для всех одни, только у кого-то получается правильно и понятно, а у кого-то - мессиво.

kana
10.10.2018
10:49:23
Так тут дело не в выборе фри/фт
Сигнатуры команд одни и те же будут
Ты сначала дизайнишь дсл, а потом пишешь команды во фри или в тайпкласс

Александр
10.10.2018
10:50:19
Меня в чате вообще понимают? Я выше написал, что синтаксис я и так знаю. Я хочу на практику применения посмотреть.

kana
10.10.2018
10:51:15
То есть тебя интересует не мощность ФТ, а разница в скиле людей дизайнить дсл, которые используют ФТ и людей, кто использует ФМ?

Александр
10.10.2018
10:51:26
И на конкретный вопрос получить из кода ответ: как производится разделение на интерфейсную часть и на то, что должно быть скрыто в имплементации (в рантайме)
Скилл людей мне все равно какой. Хоть анонимно, хоть как

kana
10.10.2018
10:52:11
Тогда мне не понятно, что ты спрашиваешь, потому что ответ: так же, как и в фри

Alexander
10.10.2018
10:52:16
я просто не знаю какой показательный кусок я могу показать
который поместится в разумные рамки

kana
10.10.2018
10:52:48
Мб проще было бы, если бы ты дал пример на фри и попросил сделать то же самое на фт
Потому что у вопроса две части: синтаксис и дизайн дсл. Синтаксис ты знаешь, дизайн дсл тебя не волнует, так в чем вопрос

Alexander
10.10.2018
10:52:51
тем более, что как верно сказал kama "Те же самые, что для функтора фри монады"

Александр
10.10.2018
10:53:34

kana
10.10.2018
10:54:35
О, я как к компу доберусь, попробую, если там немного

Google

Александр
10.10.2018
10:55:07
Не знаю, у меня - не сильно много кода

Alexander
10.10.2018
10:55:11
я не очень понимаю этой задачи, если честно, реализовать stm на уровне библиотеки не используя входящие в язык примитивы?

Александр
10.10.2018
10:55:20
Конечно
Пусть даже получится тормознутая STM

Alexander
10.10.2018
10:55:29
что можно использовать?

Александр
10.10.2018
10:55:43
MVar можно

Alexander
10.10.2018
10:55:48
должна ли быть конкрурентность нативной?
IORef можно?

Александр
10.10.2018
10:55:53
IORef, если хочется
Да все, кроме оригинального STM

Oleg
10.10.2018
10:56:26

Александр
10.10.2018
10:56:27
Потому что иначе задача становится крайне тривиальной

Alexander
10.10.2018
10:56:32
т.е. ты в своём решении не poor man concurrency делал?

Oleg
10.10.2018
10:56:39
Навроде спорить про ЯП в жерке

Александр
10.10.2018
10:57:01

Alexander
10.10.2018
10:57:30
хорошо
так, ещё вопрос, а зачем там нужно FT решение?
т.е. какие возможности обобщения и дополнительных реализаций предполагаются?

Александр
10.10.2018
10:59:48

Google

Alexander
10.10.2018
11:00:52
я не знаю зачем решать такую задачу, а почему не иметь простую
newtype STM = SMT (ST RealWorld a)
data TVar
readTVar
writeTVar
для этого не нужно ни FT ни Free

Александр
10.10.2018
11:01:25
Интересный вариант
Но про retry я не представляю, что тут должно быть

Alexander
10.10.2018
11:01:47
эти ребята нужны если ты хочешь обобщать и иметь различные имплементации исполнителя
это то, как реализовано STM в RTS
т.е. фишка обощения в том, что ты можешь использовать не STM а Foo
или подменить интерпретатор твоего языка
например он отладку начнет писать автоматом
или поменяет правила разрешения конфликтов

Александр
10.10.2018
11:03:11
Обобщение - это только часть задач FT / Free

Alexander
10.10.2018
11:03:48
я не вижу зачем для этого нужно обобщение

Oleg
10.10.2018
11:04:03

Александр
10.10.2018
11:04:13
Борьба со сложностью ПО - еще одна часть задач.
Иной подход к имплементации (не интерфейсу) - третья

Oleg
10.10.2018
11:04:23
И делать часть промежуточных действий Unwrapped

Александр
10.10.2018
11:04:38

Alexander
10.10.2018
11:04:40
твой интерфейс это твой модуль

Александр
10.10.2018
11:05:06

Alexander
10.10.2018
11:05:32
я не согласен с этим утверждением

Google

Александр
10.10.2018
11:05:40
Вариантов создания функциональных интерфейсов довольно много на текущий момент. FT, Free, ReaderT паттерн

Alexander
10.10.2018
11:05:47
т.к. какой бы способ дизайна ты не предложил он укладывается

Александр
10.10.2018
11:05:50
И еще есть ряд

Alexander
10.10.2018
11:07:04
вышепредложенные укладываются

Александр
10.10.2018
11:07:11
Оно, может, и укладывается, но это нифига не единственно возможная практика.

Alexander
10.10.2018
11:07:16
возможно неукладывающиеся скрываются в "и другие"№

Александр
10.10.2018
11:07:17
Я ж говорю, покажи мне свои интерфейсы

Kirill
10.10.2018
11:07:19
@graninas а чем http://hackage.haskell.org/package/concurrency-1.6.1.0/docs/Control-Monad-STM-Class.html не FT?
при том, что тут вот как раз реальная есть задача и применение
в рамках dejafu как минимум

Александр
10.10.2018
11:08:24

Alexander
10.10.2018
11:08:25
это FT

Kirill
10.10.2018
11:08:41
не использует

Александр
10.10.2018
11:08:55

Alexander
10.10.2018
11:09:11
смысл FT и Free в том, что интерпретатор можно менять
они ничего не говорят про интепретатор и его реализацию

Kirill
10.10.2018
11:09:28
дак тут и есть это
хочешь нативный stm - есть на нём
а в тестах - своя имплементация

Александр
10.10.2018
11:10:37
смысл FT и Free в том, что интерпретатор можно менять
Смысл совсем в другом. Что можно абстрагировать и убирать сложность. Эффективно разделять на интерфейс и имплементацию. Менять или не менять интерпретатор - дело десятое. У меня может быть только 1 потенциальный интерпретатор, но если мне нужно разделить мой код на интерфейс и имплементацию, я все равно буду это использовать

Kirill
10.10.2018
11:10:43
http://hackage.haskell.org/package/dejafu-1.11.0.3/docs/Test-DejaFu-Conc-Internal-STM.html