एक सामान्य समाधान एक नए प्रकार का परिचय देना है। यह अधिक शामिल हो सकता है, लेकिन इसमें किसी भी प्रकार के लिए काम करने का लाभ है जो अपनी स्वयं की अनंतता को परिभाषित नहीं करता है।
अगर T
है, जिसके लिए एक प्रकार lteq
परिभाषित किया गया है, तो आप को परिभाषित कर सकते InfiniteOr<T>
के साथ lteq
कुछ इस तरह:
class InfiniteOr with type parameter T:
field the_T of type null-or-an-actual-T
isInfinite()
return this.the_T == null
getFinite():
assert(!isInfinite());
return this.the_T
lteq(that)
if that.isInfinite()
return true
if this.isInfinite()
return false
return this.getFinite().lteq(that.getFinite())
मैं इसे सटीक जावा सिंटैक्स में अनुवाद करने के लिए आपके पास छोड़ दूँगा। मुझे उम्मीद है कि विचार स्पष्ट हैं; लेकिन मैं उन्हें किसी भी तरह से जादू कर दूं।
यह विचार एक नया प्रकार बनाने के लिए है जिसमें सभी समान मूल्य पहले से मौजूद कुछ प्रकार के हैं, साथ ही एक विशेष मूल्य है - जहां तक आप सार्वजनिक विधियों के माध्यम से बता सकते हैं- ठीक उसी तरह जिस तरह से आप कार्य करने के लिए अनंत चाहते हैं, जैसे कि यह उससे अधिक है और कुछ। मैं उपयोग कर रहा हूँnull
यहां अनंत का प्रतिनिधित्व करने के लिए , क्योंकि यह जावा में सबसे सीधा लगता है।
यदि आप अंकगणितीय संचालन जोड़ना चाहते हैं, तो तय करें कि उन्हें क्या करना चाहिए, फिर उस पर अमल करें। यह शायद सबसे सरल है यदि आप पहले अनंत मामलों को संभालते हैं, तो मूल प्रकार के परिमित मूल्यों पर मौजूदा संचालन का पुन: उपयोग करें।
दाएं-हाथ की ओर के शिशुओं या इसके विपरीत, बाएं-हाथ की ओर की शिशुओं को संभालने के एक सम्मेलन को अपनाने के लिए फायदेमंद है या नहीं, यह सामान्य पैटर्न हो सकता है या नहीं भी हो सकता है; मैं इसे आज़माए बिना नहीं बता सकता, लेकिन कम-से-या-बराबर ( lteq
) के लिए मुझे लगता है कि पहले दाहिने हाथ की अनंतता को देखना सरल है। मैं ध्यान दें कि lteq
है नहीं , विनिमेय लेकिन add
औरmul
कर रहे हैं; शायद यह प्रासंगिक है।
नोट: अनंत मूल्यों पर जो होना चाहिए उसकी अच्छी परिभाषा के साथ आना हमेशा आसान नहीं होता है। यह तुलना, जोड़ और गुणा के लिए है, लेकिन शायद घटाव नहीं है। इसके अलावा, अनंत कार्डिनल और क्रमिक संख्याओं के बीच एक अंतर है, जिस पर आप ध्यान देना चाहते हैं।