GHC Generics ile karşılaştırıldığında, sadece SYB ile mümkün olan veya daha kolay olan herhangi bir görev var mı?GHC Generics üzerinden SYB (kazanı çıkarır) avantajları
8
A
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.