हर कोई dependently टाइप किया कार्यात्मक भाषाओं पर प्राकृतिक संख्या व्यक्त करने के लिए सुरुचिपूर्ण तरीका जानता है:आप कार्यात्मक भाषाओं पर संख्यात्मक टावर को औपचारिक कैसे बनाते हैं?
data Nat = Zero | Succ Nat
पूर्णांक, अंश, रियल, परिसर और Quaternion, हैं भी, बहुत ही व्यावहारिक प्रोग्रामिंग आवेदन के लिए महत्वपूर्ण। एक उन्हें लागू कर सकते हैं:
data Integer = Integer (sign : Bool) (modulus : Nat)
data Fraction = Fraction (dividend : Nat) (divisor : Nat)
data Real = Real (exponent : Integer) (fraction : Nat)
data Complex = Complex Real Real
data Quaternion = Quaternion Real Real Real Real
लेकिन उन में से कोई भी वास्तव में के रूप में सार्थक Nats कर के रूप में अपने प्रकार की वास्तविक संरचना/प्रकृति को प्रतिबिंबित। इंटीजर वास्तविक पूर्णांक के लिए isomorphic नहीं है, उदाहरण के लिए (जैसे शून्य दो बार होता है)। रीलों को स्टोर करने के लिए दस लाख से अधिक कोशिकाओं की आवश्यकता होती है (3.1415 9 2), फिर भी स्टोर करने के लिए 100 भी नहीं (4096), जो असंतुलित दिखता है। कॉम्प्लेक्स केवल रील्स का एक गुच्छा है, जो वास्तव में एक कॉम्प्लेक्स को प्रतिबिंबित नहीं करता है। मुझे आश्चर्य है कार्यात्मक प्रोग्रामिंग भाषाओं पर संख्यात्मक टावर व्यक्त करने का प्राकृतिक, सुरुचिपूर्ण तरीका क्या है?
मैंने पहले इसी तरह के प्रश्न पूछे हैं लेकिन मुझे लगता है कि कोई भी कभी भी पर्याप्त समाधान के साथ नहीं आया है। – MaiaVictor
आपको ऐसा क्यों नहीं लगता कि "सटीक रूप से दर्शाता है कि 'कॉम्प्लेक्स' क्या है? (उस ने कहा, आपके 'असली' में केवल अंतिम दशमलव मान शामिल हैं, जो राशनल का सख्त सबसेट है।) मेरा मतलब है, मुझे लगता है कि आप इसे वास्तविक बहुपदों के रूप में प्रतिनिधित्व कर सकते हैं mod x^2 + 1, लेकिन यह स्पष्ट नहीं है मुझे तुम्हारी आपत्ति क्या है। –
गणितीय रूप से बोलते हुए, हम जो कुछ भी चुनते हैं उसके अलावा किसी अन्य चीज़ की "मौलिक संरचना" नहीं है, और यदि हम चाहें तो हम दो अलग-अलग संरचनाएं दिखा सकते हैं और उन्हें एक दूसरे के रूप में उपयोग कर सकते हैं। पूर्णांक के आपके प्रतिनिधित्व के बारे में कुछ भी नहीं है। –