Полистат: Компонуемые конечные автоматы=news.ycombinator.com=

Полисостояние: составные конечные автоматы ( github.com/sdzx-1 )

goless 1 час назад | [–]
Основная философия дизайна Polystate

1. Запишите состояние конечного автомата на уровне типа.

2. Достижение компонуемых конечных автоматов посредством композиции типов.

Практические эффекты полистата

1. Определить общее поведение программы через композиционные объявления. Это означает, что мы получаем возможность указать общее поведение программы на уровне типа. Это значительно улучшает корректность императивных структур программы. Этот стиль программирования также побуждает нас перепроектировать состояние программы с точки зрения типов и композиции, тем самым улучшая компоновку кода.

2. Построение сложных конечных автоматов путем составления простых состояний. Впервые мы можем достичь повторного использования кода на семантическом уровне посредством композиции типов. Другими словами, мы нашли способ выразить повторное использование кода на семантическом уровне на уровне типов. Этот подход одновременно достигает трех эффектов: краткости, корректности и безопасности.

3. Автоматически генерировать диаграммы состояний. Поскольку общее поведение программы определяется декларациями, polystate может автоматически генерировать диаграммы состояний. Пользователи могут интуитивно понимать общее поведение программы с помощью этих диаграмм.

goless 52 минуты назад | | [–]
реддит: https://www.reddit.com/r/Zig/comments/1lhfbjk/polystate_comp…
goless 1 час назад | | [–]
Всем привет, я разработал интересную библиотеку Polystate: Composable Finite State Machines

Поскольку у меня есть опыт только с Haskell и Zig, мне интересно, есть ли другие языки или библиотеки с похожими реализациями?

solomonb 14 минут назад | | [–]
У меня возникли проблемы с чтением кода 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/

goless 55 минут назад | | | [–]
Для достижения этого он в значительной степени полагается на оценку zig во время компиляции, и я не уверен, можно ли добиться того же эффекта в других языках.
goless 51 минута назад | [–]
зиггит: https://ziggit.dev/t/polystate-composable-finite-state-machi…


Рассмотрите возможность подачи заявки на набор в YC на осень 2025 года! Заявки принимаются до 4 августа

Source: news.ycombinator.com

Leave a Reply

Your email address will not be published. Required fields are marked *