2014-11-12 19 views

cevap

3

GHC Generics, temel olarak herhangi bir sorguyu veya geçişi gerçekleştirmenin oldukça ayrıntılı bir yoludur.

data Stmt = ... lots of constrs ... 
data Expr = Const Int 
      | ... lots of other constrs ... 

Bunların hepsini nasıl sabitler Expr veya Stmt ya başlayarak almak için SYB kaldıraç yapın: Örneğin, her iki Typeable, Generic ve Data türetmek Stmt ve Expr türleriyle bir dil AST düşünün? gibi: N tipleri için iki sınıf, ürün gösterim toplamı üzerinden bir geçişi gerektiren Jenerik tipik kullanımı ile

getConst (Const i) = [i] 
getConst _   = [] 

getAllConst = everything (++) (mkQ getConst) 

Kontrast bu ve sınıf N kez örneğini geçilen ihtiyacı. SYB'nin ve aslında çoğu jenerik sistemin düz olduğu yerlerde performance bulunur.