2014-11-12 11 views
8

पर एसईबी (अपने बॉयलरप्लेट को स्क्रैप करें) के फायदे जीएचसी जेनरिक की तुलना में केवल एसईबी के साथ संभव हैं या इसके साथ बहुत आसान हैं?जीएचसी जेनरिक

उत्तर

3

जीएचसी जेनरिक मूल रूप से किसी भी क्वेरी या ट्रैवर्सल को करने का एक वर्बोज़ तरीका है।

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

कैसे आप SYB का लाभ उठाने के सभी स्थिरांक या तो Expr या Stmt से शुरू प्राप्त करने के लिए है: उदाहरण के लिए, Stmt और Expr प्रकार दोनों निकाले जाते हैं कि Typeable, Generic, और Data के साथ एक भाषा एएसटी पर विचार? की तरह कुछ: दो वर्गों, उत्पादों प्रतिनिधित्व की राशि पर एक ट्रेवर्सल की आवश्यकता होती है जेनेरिक्स की विशिष्ट उपयोग के साथ

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

getAllConst = everything (++) (mkQ getConst) 

कंट्रास्ट इस, और कक्षा एन बार का दृष्टांत एन प्रकार के लिए चल जरूरत है। जहां एसईबी, और वास्तव में सबसे सामान्य प्रणाली, फ्लैट गिरती है performance में है।