2013-08-26 5 views
6

में टाइप-स्तरीय सेट मैंने देखा है कि जीएचसी के नवीनतम संस्करणों में टाइप-स्तरीय सूचियों के लिए समर्थन है। हालांकि, मुझे किसी एप्लिकेशन के लिए टाइप-स्तरीय सेट के साथ काम करने की आवश्यकता है, और टाइप-स्तरीय सूचियों के आधार पर एक प्रकार-स्तरीय सेट लाइब्रेरी को कार्यान्वित करना चाहते हैं। लेकिन मैं जहां शुरू करने के लिए :(हास्केल/एग्डा

वहाँ किसी भी पुस्तकालय हास्केल में प्रकार स्तरीय सेट समर्थन कर रहा है पता नहीं है

+0

वैसे विभिन्न एक्स्टेंसिबल रिकॉर्ड लाइब्रेरी आपको सेट-आश ऑपरेशंस (यूनियन, रिकॉर्डिंग में लेबल होने पर जांच कर रहे हैं) अगर कार्यान्वयन Data.Set जैसे पेड़ नहीं है। सूची , या उस पृष्ठ पर अन्य बिट्स देखें। – aavogt

+0

अब [एक लाइब्रेरी] है (https://hackage.haskell.org/package/type-level-sets) जो यह प्रदान करता है। –

उत्तर

2

आप HSet संपत्ति HList के लिए HList पैकेज से उपयोग कर सकते हैं:

{-# LANGUAGE FlexibleInstances #-} 

import Data.HList 

class (HList l, HSet l) => ThisIsSet l where 
    -- Here we have @[email protected] which is @[email protected] _and_ @[email protected] 
    test :: l 

-- This is ok: 

instance ThisIsSet HNil where 
    test = hNil 

-- And this: 

instance ThisIsSet (HCons HZero HNil) where 
    test = hCons hZero hNil 

-- And this (HZero != HSucc HZero): 

instance ThisIsSet (HCons HZero (HCons (HSucc HZero) HNil)) where 
    test = hCons hZero (hCons (hSucc hZero) hNil) 

-- This is an error since HSucc HZero == HSucc HZero: 

instance ThisIsSet (HCons (HSucc HZero) (HCons (HSucc HZero) HNil)) where 
    test = hCons (hSucc hZero) (hCons (hSucc hZero) hNil) 

अन्य प्रकार के साथ काम करने के लिए आपको HEq उनके लिए उदाहरण लिखने की आवश्यकता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^