Chiesa codifica (aka pattern Visitor) è un modo di rappresentare i dati come funzioni: invece diragioni pratiche per Сhurch codifica
data T = C1 F1 F2 | C2 F3 F4
è possibile definire
data T = T (forall r. (F1 -> F2 -> r) -> (F3 -> F4 -> r) -> r)
. Sebbene la capacità di rappresentare qualsiasi cosa come una funzione sia buona, ho sempre pensato che fosse preferibile la prima versione perché è più pulita e non richiede estensioni di lingua (esplicita forall
). Tuttavia, a volte è possibile trovare dati codificati da una chiesa in librerie pubbliche. Quali sono i vantaggi dell'utilizzo di questo?
Gli esempi di codifica chiesa in biblioteche pubbliche:
- Iteratee
- Revision control monad
- (ti prego, aiutami estendere l'elenco)