चलें मान मैं एक उदाहरण List
के साथ एक प्रकार वर्ग Stack
है:टाइप क्लास में एकाधिक प्रकार पैरामीटर?
class Stack a where
push :: a -> Integer -> a
pop :: a -> a
last :: a -> Integer
data List = Empty | Element Integer List
instance Stack List where
push list value = Element value list
pop Empty = error "No elements"
pop (Element _ list) = list
last Empty = error "No elements"
last (Element value _) = value
कैसे List
के क्रम में परिभाषित करने की Stack
है Integer
मूल्यों तक ही सीमित नहीं किया जाना है?
-- class Stack (?) where ...
data List a = Empty | Element a (List a)
-- instance Show (List a) where ...
इससे पहले मैंने वास्तव में एक ही वाक्यविन्यास की कोशिश की, लेकिन केवल 'इंस्टेंस स्टैक (सूची ए) लिखा। और मैं प्रज्ञा के लिए 'फ्लेक्सिबल इंस्टेंस' को जोड़ना भूल गया। अब यह काम करता है, धन्यवाद :) – Cubinator73
यदि प्रत्येक 'ए' एक 'बी' पर स्वीकार करता है जैसे कि 'बीए स्टैक' का एक उदाहरण है, तो एक कार्यात्मक निर्भरता 'ए-> बी' टाइप अनुमान मशीनरी को महत्वपूर्ण रूप से मदद कर सकती है। अन्यथा, 'pop :: a -> a' पर प्रत्येक कॉल संदिग्ध है: 'b'' pop' के संदर्भ से निर्धारित नहीं किया जा सकता है। (निश्चित रूप से परिवारों का भी इस्तेमाल किया जा सकता है।) – chi
@chi: आईआईआरसी आप प्रतिबंध जोड़ सकते हैं, जैसे कि 'ए' के लिए केवल एक ही 'बी' होगा। बाद में इसे देखेंगे। –