ठीक है अगर यह वास्तव में एक खुला प्रश्न है, तो परिभाषा के अनुसार हम # 1 का जवाब नहीं जानते हैं। डिज़ाइन रिक्त स्थान बहुत अलग हैं, और यह मेरे लिए स्पष्ट नहीं है कि आप कैसे सीमित पॉलीमोर्फिज्म में उप-टाइपिंग को सीधे एन्कोड कर सकते हैं। एन्कोडिंग प्रत्यक्ष है जब तर्क पॉलिमॉर्फिक हैं। उदाहरण के लिए,
foo :: (Num a) => a -> Bool
के साथ एक Haskell समारोह के बराबर है, का कहना है:
Bool foo(Num x)
एक OO भाषा में
। हालांकि यह स्पष्ट नहीं है कि कैसे एन्कोड करने के लिए:
// I will return some Num, but I'm not going to tell you what kind exactly
Num bar(Bool x)
विवश बहुरूपता में
, न ही यह कैसे एन्कोड करने के लिए स्पष्ट है:
-- I can return any kind of Num, *you* tell *me* what kind
bar :: (Num a) => Bool -> a
subtyping में
।
# 2 के लिए मेरा सबसे अच्छा अनुमान यह है कि स्कैला को जावा से बात करना है, और जावा टाइपिंग के बारे में बात करता है। और क्योंकि स्कैला में हर प्रकार की सिस्टम सुविधा होती है जिसे मनुष्य के लिए जाना जाता है क्योंकि ऐसा लगता है कि इसे ठंडा होने के लिए यह करना है। :- पी
आपको स्कालाज़ में रुचि हो सकती है, जो व्यापक रूप से बाध्य (उर्फ एड-होक) बहुरूपता का उपयोग करती है। स्कैला में टाइप अनुमान, हास्केल के रूप में कई स्थानों पर काम नहीं करता है, जो इसे प्रकार कक्षाओं को एन्कोड करने के लिए श्रमिक बना सकता है। लेकिन हम वैसे भी कोशिश करते हैं :) – retronym