Церкви кодирования (ака Visitor Pattern) является способ представления данных в виде функций: вместоПрактические причины церковно Кодирование
data T = C1 F1 F2 | C2 F3 F4
вы можете определить
data T = T (forall r. (F1 -> F2 -> r) -> (F3 -> F4 -> r) -> r)
. Хотя способность представлять что-либо как функцию хороша, я всегда думал, что первая версия предпочтительнее, потому что она чище и не требует языковых расширений (явный forall
). Тем не менее, вы можете иногда находить церковные данные в публичных библиотеках. Каковы преимущества использования этого?
примеры церковного кодирования в публичных библиотеках:
- Iteratee
- Revision control monad
- (пожалуйста, помогите мне расширить список)