Грубо говоря, tcp сервер и клиент на полностью своем стеке. И вот нужно немного "взаимно нарушать" принятые правила tcp-ip-"общения")
Ничё не понятно. Но в общем если у Вас просто стейт-машина на уровне типов, где при каждом текущем стейте определён набор доступных вызовов, то это просто сессионные типы, а если эта стейт-машина ещё и меняется в зависимости от рантайм-значений, то это сессионные + зависимые типы, ну и есть шанс, что хаскеля хватит для этого