ФП для императивной задачи
От: Аноним  
Дата: 09.07.10 07:14
Оценка:
Привет! Как можно решить следующую задачу в рамках функционального подхода? Байтовый массив данных разбивается на отдельные пакеты (формат простой, для вопроса это не имеет особого значения — добавляется заголовок, в который входит номер пакета, длина блока данных, контрольная сумма, маркер крайнего пакета и т.п.). Т.е. есть функция split. Приемная сторона должна выполнить функцию combine, чтобы восстановить исходный массив данных. Причем последовательность и задержка между приемом отдельных пакетов в общем случае может быть произвольна. Получается, что combine должна вызываться многократно на каждый принятый пакет, возвращать один из флагов — Error (в случае неверного пакета, к примеру, ошибка контрольной суммы — в этом случае отбрасывается вся цепочка пакетов), Process (означает, что принят очередной пакет) и Complete (означает что все пакеты приняты, теперь их можно упорядочить и вернуть оригинальный массив данных). Получается, что combine имеет побочный эффект в виде сохраняемого состояния между последовательностью вызовов. Вот задался таким вопросом, как бы это выглядело в рамках ФП. Хотелось бы ради интереса попробовать реализовать на Clojure, но не знаю с какого бока подойти.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.