मान लीजिए कि हास्केल के फ़ंक्शन एप्लिकेशन ("स्पेस" ऑपरेटर) भाषा में बेक्ड के बजाय टाइपक्लास में थे। मुझे लगता है यह कैसाक्या होगा यदि फ़ंक्शन एप्लिकेशन टाइपक्लास था?
class Apply f where
($) :: f a r -> a -> r
instance Apply (->) where
($) = builtinFnApply#
और f a
कुछ f $ a
को desugar होगा विचार करेंगे। विचार यह है कि यह आपको अन्य प्रकारों को परिभाषित करने देता है जो कार्यों की तरह कार्य करते हैं, यानी
instance Apply LinearMap where
($) = matrixVectorMult
और इसी तरह।
क्या यह प्रकार का अनुमान अपरिहार्य बनाता है? मेरा वृत्ति कहता है कि यह करता है, लेकिन टाइप अनुमान की मेरी समझ सादे हिंडली-मिलनर पर रुक जाती है। अनुवर्ती के रूप में, यदि यह अपरिहार्य है, तो इसे कुछ पैथोलॉजिकल उदाहरणों को दूर करके निर्णायक बनाया जा सकता है?