Church 编码(又名访客模式)是一种将数据表示为函数的方式:而不是
data T = C1 F1 F2 | C2 F3 F4
你可以定义
data T = T (forall r. (F1 -> F2 -> r) -> (F3 -> F4 -> r) -> r)
. 尽管将任何东西表示为函数的能力很好,但我一直认为第一个版本更可取,因为它更简洁并且不需要语言扩展(显式forall
)。但是,您有时可以在公共图书馆中找到教堂编码的数据。使用它有什么好处?
公共图书馆中教堂编码的例子: