Полисостояние: составные конечные автоматы ( github.com/sdzx-1 )
Основная философия дизайна Polystate
1. Запишите состояние конечного автомата на уровне типа.
2. Достижение компонуемых конечных автоматов посредством композиции типов.
Практические эффекты полистата
1. Определить общее поведение программы через композиционные объявления. Это означает, что мы получаем возможность указать общее поведение программы на уровне типа. Это значительно улучшает корректность императивных структур программы. Этот стиль программирования также побуждает нас перепроектировать состояние программы с точки зрения типов и композиции, тем самым улучшая компоновку кода.
2. Построение сложных конечных автоматов путем составления простых состояний. Впервые мы можем достичь повторного использования кода на семантическом уровне посредством композиции типов. Другими словами, мы нашли способ выразить повторное использование кода на семантическом уровне на уровне типов. Этот подход одновременно достигает трех эффектов: краткости, корректности и безопасности.
3. Автоматически генерировать диаграммы состояний. Поскольку общее поведение программы определяется декларациями, polystate может автоматически генерировать диаграммы состояний. Пользователи могут интуитивно понимать общее поведение программы с помощью этих диаграмм.
реддит: https://www.reddit.com/r/Zig/comments/1lhfbjk/polystate_comp…

Всем привет, я разработал интересную библиотеку Polystate: Composable Finite State Machines
Поскольку у меня есть опыт только с Haskell и Zig, мне интересно, есть ли другие языки или библиотеки с похожими реализациями?
У меня возникли проблемы с чтением кода Zig, поэтому я не уверен, насколько они совпадают, но я проделал некоторую работу с Мили и Муром, закодированными в виде коалгебр в Haskell:
https://blog.cofree.coffee/2025-03-05-chat-bots-revisited/ https://github.com/cofree-coffee/cofree-bot
Также используется библиотека линз для кодирования машин Мура как полиномиальных функторов: https://blog.cofree.coffee/2024-07-02-lensy-moore/
Для достижения этого он в значительной степени полагается на оценку zig во время компиляции, и я не уверен, можно ли добиться того же эффекта в других языках.

зиггит: https://ziggit.dev/t/polystate-composable-finite-state-machi…
Source: news.ycombinator.com