Alexander
@VividDesires @chshersh от меня вопрос кстати, а как в servant-generic с nested endpoints?
Alexander
Я за то, чтобы head был unsafe. Я намучался с сейфным head в PureScript. Нифига не удобно
Alexander
через пачку типов вложенных?
A64m
делать колстековый констрейнт для СТРАШНЫХ ЧАСТИЧНЫХ ФУНКЦИЙ было бы еще разумным для альтернативных прелюдий, да
Alexander
Alexander
? Не понял вопроса
другая ветка, игнорируй ;)
NC
через пачку типов вложенных?
Вложенные структуры
Alexander
Вложенные структуры
и ещё для всяких servant-swagger и т..п как работать будет
NC
в поле просто структура подапи лежит
Alexander
т.е. у меня есть тип, какой-нить типа Description "Blabla"
NC
сваггер вроде работает, но надо проверить
Alexander
ну не важно, например я свой тип ввожу, о котором автор точно не в курсе
NC
у IOHK точно работал
Alexander
например CanThrow 'Bla
Dmitrii
@chshersh, тут @VividDesires спрашивает про servant-generic, можешь про опыт рассказать
Опыт очень приятный 🙂 По сути, мы разбиваем API по иерархии на большие части, а затем каждую часть уточняем. У нас при этом еще иерархия модулей копирует иерархию API. Да, nested endpoints через вложенные типы данных.
Dmitrii
сваггер вроде работает, но надо проверить
Работает без проблем, мы используем swagger
саша
а сервант умеет в рамл?
Alexander
типы внутри эндпойнтов не влияют
т.е. я могу любое MyFoo :> "bart" :> MYVerb La кодировать?
NC
да
Alexander
а норм тогда
Alexander
а сервант умеет в рамл?
сервант расширяемый
Alexander
при этом пользовательском уровне, в этом фишка
NC
servant-generic отвечает только за преобразование servant types <=> структура
Alexander
а понял, как оно работает
Leonid 🦇
сколько нужно времени и памяти для servant-generic?
Alexander
https://ghc.haskell.org/trac/ghc/wiki/Performance/Tests
Alexander
CC @A64m_qb0 никто не хочет поконтрибьютить с предложениями?
Alexander
хотя не там просто хотят формат текущей поменять
Alexander
т.е. останется бестолковым
A64m
они хотят, чтоб изменения ничего не значащих измерений было проще анализировать
Alexander
да
Alexander
чего-то сегодня бекендсикрета мало
Alexander
: (
Alexander
В ООП-языках ОО-интерфейсы тоже для всех одни, только у кого-то получается правильно и понятно, а у кого-то - мессиво.
кана
Так тут дело не в выборе фри/фт
кана
Сигнатуры команд одни и те же будут
кана
Ты сначала дизайнишь дсл, а потом пишешь команды во фри или в тайпкласс
Alexander
Меня в чате вообще понимают? Я выше написал, что синтаксис я и так знаю. Я хочу на практику применения посмотреть.
кана
То есть тебя интересует не мощность ФТ, а разница в скиле людей дизайнить дсл, которые используют ФТ и людей, кто использует ФМ?
Alexander
И на конкретный вопрос получить из кода ответ: как производится разделение на интерфейсную часть и на то, что должно быть скрыто в имплементации (в рантайме)
Alexander
Скилл людей мне все равно какой. Хоть анонимно, хоть как
кана
Тогда мне не понятно, что ты спрашиваешь, потому что ответ: так же, как и в фри
Alexander
я просто не знаю какой показательный кусок я могу показать
Alexander
который поместится в разумные рамки
кана
Мб проще было бы, если бы ты дал пример на фри и попросил сделать то же самое на фт Потому что у вопроса две части: синтаксис и дизайн дсл. Синтаксис ты знаешь, дизайн дсл тебя не волнует, так в чем вопрос
Alexander
тем более, что как верно сказал kama "Те же самые, что для функтора фри монады"
кана
О, я как к компу доберусь, попробую, если там немного
Alexander
Не знаю, у меня - не сильно много кода
Alexander
я не очень понимаю этой задачи, если честно, реализовать stm на уровне библиотеки не используя входящие в язык примитивы?
Alexander
Конечно
Alexander
Пусть даже получится тормознутая STM
Alexander
что можно использовать?
Alexander
MVar можно
Alexander
должна ли быть конкрурентность нативной?
Alexander
IORef можно?
Alexander
IORef, если хочется
Alexander
Да все, кроме оригинального STM
Oleg
Я просил сделать STM на FT уже. @odomontois , как там с этим дело, кстати?
Я как обычно забил и вместо этого занимался чем-то интересным
Alexander
Потому что иначе задача становится крайне тривиальной
Alexander
т.е. ты в своём решении не poor man concurrency делал?
Oleg
Навроде спорить про ЯП в жерке
Alexander
т.е. ты в своём решении не poor man concurrency делал?
Нет, там совсем даже не poor man concurrency
Alexander
хорошо
Alexander
так, ещё вопрос, а зачем там нужно FT решение?
Alexander
т.е. какие возможности обобщения и дополнительных реализаций предполагаются?
Alexander
так, ещё вопрос, а зачем там нужно FT решение?
Ну, я думаю, будет полезно для общего развития. Сравнивать оба подхода на одной задаче
Alexander
т.е. какие возможности обобщения и дополнительных реализаций предполагаются?
Не очень понял вопрос. Обобщение, по сути, не требуется. Минимум - работа с TVar, retry.
Alexander
я не знаю зачем решать такую задачу, а почему не иметь простую newtype STM = SMT (ST RealWorld a) data TVar readTVar writeTVar
Alexander
для этого не нужно ни FT ни Free
Alexander
Интересный вариант
Alexander
Но про retry я не представляю, что тут должно быть
Alexander
эти ребята нужны если ты хочешь обобщать и иметь различные имплементации исполнителя
Alexander
это то, как реализовано STM в RTS
Alexander
т.е. фишка обощения в том, что ты можешь использовать не STM а Foo
Alexander
или подменить интерпретатор твоего языка
Alexander
например он отладку начнет писать автоматом