Подтвердить что ты не робот

Практические причины церковного кодирования

Церковное кодирование (так называемый шаблон посетителя) - это способ представления данных как функции: вместо

data T = C1 F1 F2 | C2 F3 F4

вы можете определить

data T = T (forall r. (F1 -> F2 -> r) -> (F3 -> F4 -> r) -> r)

. Хотя способность представлять что-либо как функцию хороша, я всегда думал, что первая версия предпочтительнее, потому что она более чистая, и она не требует языковых расширений (явный forall). Тем не менее, вы можете иногда находить церковные данные в публичных библиотеках. Каковы преимущества использования этого?

Примеры церковного кодирования в публичных библиотеках:

4b9b3361

Ответ 1

Это соответствует методу продолжения прохождения с несколькими продолжениями и выполняется для производительности: вместо этого избегается явное построение и уничтожение данных передавая управление непосредственно на основе результата совпадения шаблонов, которое было бы сделано немедленно. Это не всегда приводит к повышению производительности, но когда это происходит, это может быть довольно значительным.

В принципе, вы можете думать об этом как об управлении данными и контролем. Если то, что вы делаете, по сути, похоже на контроль в природе - например, ветки успеха и отказа анализатора - тогда представление на основе управления может быть превосходным. В противном случае, придерживайтесь данных.