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