का जिक्र करते हुए मैं अपने कोड में कुछ स्थानीय कार्यों में प्रकार हस्ताक्षर जोड़ना चाहता हूं। हालांकि, उनके प्रकारों में अज्ञात, अस्तित्व में बाध्य प्रकार चर शामिल हैं। चूंकि वे अज्ञात हैं, मुझे नहीं पता कि एक प्रकार के हस्ताक्षर कैसे लिखना है। मैं इस प्रकार के चर का उल्लेख कैसे कर सकता हूं?एक अस्तित्व प्रकार परिवर्तनीय
निम्न उदाहरण में, go
टाइप [b] -> Int -> Int
, जहां b
प्रकार पैटर्न मैच T (x_shared:xs) g
से बंधे है। इसके लिए मैं किस प्रकार का हस्ताक्षर लिख सकता हूं?
data T = forall a. T [a] (a -> a -> Int)
f :: T -> Int
f (T (x_shared:xs) g) = go xs 0
where
-- go :: what type?
go (x:xs) n = go xs $! n + g x_shared x
go [] n = n
आप इस उपयोगी mightfind: http://stackoverflow.com/questions/13828602/outer-bound-type-declarations-without-scopedtypevariables –