Size: a a a

2020 October 28

K

KLH in Haskell
Kirill Valyavin
Ничё не понятно. Но в общем если у Вас просто стейт-машина на уровне типов, где при каждом текущем стейте определён набор доступных вызовов, то это просто сессионные типы, а если эта стейт-машина ещё и меняется в зависимости от рантайм-значений, то это сессионные + зависимые типы, ну и есть шанс, что хаскеля хватит для этого
Мда, понял. Приблизительно так и представлял себе ситуацию) спасибо. Буду думать, как динамическую часть в статическую конвертнуть по максимуму
источник

MP

Misha Puzanov in Haskell
KLH
Грубо говоря, tcp сервер и клиент на полностью своем стеке. И вот нужно немного "взаимно нарушать" принятые правила tcp-ip-"общения")
по моему небольшому опыту оно не стоит возьни.

У меня была похожая задача с выбором версии протокола и последующей проверкой этой версии. И в зависимости от версии протокола сообщения могут быть слегка разными. Сначала казалось, что оно очень красиво укладывается в GADT, но в итого выросло в мешанину из динамических проверок и типостраданий. Проще оказалось выделить чистую часть протокола в простенькую стейт-машину, грубо говоря,

respond :: Session -> Message -> (ResponseMessage, Session)
источник

MP

Misha Puzanov in Haskell
хаскель все-таки быстро становится неуклюжим, если пытаться все запихивать в type level
источник

MP

Misha Puzanov in Haskell
кода становится много, везде надо писать страшные сигнатуры, потому что компилятор ничерта сам не может вывести, писать eliminators и вот это все
источник

AV

Alexander Vershilov in Haskell
Да норм
источник

AA

A64m AL256m qn<co... in Haskell
он не предназначен для этого
источник

AV

Alexander Vershilov in Haskell
Тут то вообще протокол грубо говоря описывается одним Gadt
источник

AV

Alexander Vershilov in Haskell
хотя это и есть session types
источник

MP

Misha Puzanov in Haskell
Alexander Vershilov
Тут то вообще протокол грубо говоря описывается одним Gadt
описывается красиво, да
data Message (session :: 'Session) where
и вперед, но потом быстро становится неудобно, когда надо это парсить и чо-то дальше делать с этими сессиями

хотя я конечно не особо смотрел, как правильно это делать, так что вполне может быть, что наступал на известные грабли.
источник

D

Denis in Haskell
Здравствуйте! :)
источник

IK

Ilya Kos in Haskell
Здравствуйте
источник

A

Andrey in Haskell
блин, почему в этих дискуссиях вида "а что если", например, поменять sum, product, не хватает сравнения по ряду характеристик?

ну там расклада по всем флагам оптимизации и т.п. неужели так сложно составить сравнительный анализ разных вариантов?
источник

A

Andrey in Haskell
а то всё сводится к
- давайте так
- нет, давайте вот так
- а ещё можно так
- а тут работает
источник

AV

Alexander Vershilov in Haskell
В нашей большой компании используется такой подход, поэтому заткнитесь и повторяйте!
источник

KZ

Kirill Zaborsky in Haskell
в какой такой большой?
источник

AV

Alexander Vershilov in Haskell
Это не мой аргумент
источник

AV

Alexander Vershilov in Haskell
У нас их хаскелистов 4 человека в максимуме было, но в среднем 2.
источник

AV

Alexander Vershilov in Haskell
А всего около 10
источник

AA

A64m AL256m qn<co... in Haskell
Andrey
блин, почему в этих дискуссиях вида "а что если", например, поменять sum, product, не хватает сравнения по ряду характеристик?

ну там расклада по всем флагам оптимизации и т.п. неужели так сложно составить сравнительный анализ разных вариантов?
это очень сложно же
источник

KZ

Kirill Zaborsky in Haskell
Alexander Vershilov
Это не мой аргумент
чей?
источник