Church encoding (別名 Visitor Pattern) は、データを関数として表現する方法です:
data T = C1 F1 F2 | C2 F3 F4
あなたが定義することができます
data T = T (forall r. (F1 -> F2 -> r) -> (F3 -> F4 -> r) -> r)
. 何でも関数として表現できるのは素晴らしいことですが、最初のバージョンの方がすっきりしていて、言語拡張 (明示的) を必要としないため、常に好ましいと思っていましたforall
。ただし、公共図書館で教会がエンコードしたデータを見つけることができます。それを使用する利点は何ですか?
公共図書館における教会のエンコーディングの例:
- 繰り返す
- リビジョン管理モナド
- (リストを拡張するのを手伝ってください)