Здравствуйте, Sinclair, Вы писали:
S>Пытаемся решить проблему выразительности интерфейсов. Типа, что файл надо сначала открыть, потом можно из него произвольное количество раз читать, потом надо его закрыть (после чего читать нельзя).
S>И вот нам надо убедиться, что а) реализация корректно реализует заявленную state machine, и что б) вторая сторона тоже корректно реализует свою часть протокола. И некоторая алгебра над протоколами, которая должна проверять, что некая суперпозиция нескольких протокольных ролей является конформным расширением над некоей заданной протокольной ролью.
DSL нужен. C# не супер для этих целей, но если вы на dotnet, МSFT делает же всякие blazor/razor. Скала сильно лучше и позволяет делать приличный внутренний DSL, но менять tech stack я бы не стал. Ну или к Владу за Nitro-й
Что касается, где бы стырить идею спеков и алгебры, которые вам нужны, то тут я