मैं निम्नलिखित लिख सकते हैं:की कमी बाधा
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE ConstraintKinds #-}
f :: Integral a => (forall b. Num b => b) -> a
f = id
और यह सब अच्छा है। संभावित रूप से जीएचसी Num
से Integral
प्राप्त कर सकता है, इसलिए सब ठीक है।
मैं थोड़ा चालबाज हो सकता है, अभी तक मैं अभी भी ठीक हूँ:
class Integral x => MyIntegral x
instance Integral x => MyIntegral x
class Num x => MyNum x
instance Num x => MyNum x
f' :: MyIntegral a => (forall b. MyNum b => b) -> a
f' = id
तो कहते हैं कि मैं इस सामान्यीकरण करने के लिए है, इसलिए की तरह चाहते हैं कर सकते हैं:
g :: c2 a => (forall b. c1 b => b) -> a
g = id
अब स्पष्ट रूप से यह थूक होगा डमी, क्योंकि जीएचसी से प्राप्त नहीं कर सकता है, क्योंकि c2
बाधित नहीं है।
g
के प्रकार हस्ताक्षर में जोड़ने के लिए मुझे क्या कहना है कि " से आप c2
प्राप्त कर सकते हैं"?
जब आप कहते हैं "एक्स से एक्स एक्स प्राप्त करें", तो मैं कहूंगा "एक्स से एक्स प्राप्त करें"। आपके पहले उदाहरण में, हमारे पास 'इंटीग्रल टी' का अर्थ है 'नम टी', और दूसरी तरफ नहीं। जीएचसी को पारित 'इंटीग्रल' से 'न्यूम' शब्द निकालना है। और इसी तरह अन्य मामलों के लिए आप नीचे उल्लेख करते हैं। – chi