?

Log in

Как бы получше упаковать в Haskell'ные структуры? - Лямбда - функциональное программирование [entries|archive|friends|userinfo]
Лямбда - функциональное программирование

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Как бы получше упаковать в Haskell'ные структуры? [Mar. 5th, 2010|03:37 pm]
Лямбда - функциональное программирование

ru_lambda

[nivanych]
Задача следующая.
Есть протокол, как-бы, "высокого уровня"
для общения с определёнными устройствами.
Есть несколько похожих, но отличающихся
во многих деталях протоколов "низкого уровня", которые,
по сути, разные реализации того верхнего протокола
для работы с разными (хоть и похожими) устройствами.

Одна "высокоуровневая" команда должна преобразовываться
в несколько вопросов-ответов между программой и устройством.
Ну и в каких-то случаях, возвращать результат.

Пока что, я сделал так.
Есть две очереди "высокоуровневых" команд, одна на вход, другая на выход.
"Низкоуровневое" тоже разделено на вход и выход, и сделан поток символов с устройства.
Как бы мне наиболее правильно сделать абстракцию этого низкоуровневого протокола?
В воображении рисуется некий автомат с неким состоянием...
Пока что, сделал очень тупо, что нужно было прямо сейчас,
читая отдельным потоком "высокоуровневую" очередь,
и на каждую команду отрабатывая функцию, которая
обрататывает низкоуровневые очереди и даёт на выход
то, что нужно записать в "высокоуровневую" очередь.
Но это временное "quick-and-dirty"-решение.
А как правильно?
linkReply

Comments:
[User Picture]From: nponeccop
2010-03-05 08:17 pm (UTC)
Почитайте статьи по (lightweight) session types
(Reply) (Thread)
[User Picture]From: nivanych
2010-03-06 02:51 pm (UTC)
Ага, что-то есть.
Ну, вполне естественно было увидеть что-то от коалгебр.
(Reply) (Parent) (Thread)