एएनएसआई कॉमन लिस्प bignum
है, जो जब तक आप पर्याप्त स्थान के रूप में मनमाने ढंग से बड़ी संख्या का प्रतिनिधित्व करते थे सकता है, लेकिन यह एक "अनंत निर्दिष्ट नहीं करता "मूल्य। कुछ कार्यान्वयन हो सकता है, लेकिन यह है कि मानक का हिस्सा नहीं है। एक सूची में सबसे बड़ी संख्या खोजने:
आपके मामले में, मैं तुम्हें अपने कार्य करने के उद्देश्य के आधार पर अपने दृष्टिकोण पर पुनर्विचार करने की मिल गया है लगता है। एक खाली सूची में सबसे बड़ी संख्या खोजने की कोशिश कर अवैध/बकवास है, हालांकि है, तो आप उस मामले के लिए उपलब्ध कराना चाहते हैं। तो अगर आप एक पूर्व शर्त परिभाषित कर सकते हैं, और अगर यह मुलाकात नहीं कर रहा है, nil
वापसी या एक त्रुटि बढ़ा। वास्तव में यह है कि अंतर्निहित फ़ंक्शन max
करता है।
(apply #'max '(1 2 3 4)) => 4
(apply #'max nil) => error
संपादित करें: रेनर Joswig द्वारा बताया के रूप में, कॉमन लिस्प arbitrarily long argument lists की अनुमति नहीं है, इस प्रकार यह सबसे अच्छा है reduce
बजाय apply
उपयोग करने के लिए।
(reduce #'max '(1 2 3 4))
धन्यवाद। मुझे पता नहीं था कि अधिकतम तर्कों की मनमानी संख्या लेती है, लेकिन यह एक सुरुचिपूर्ण समाधान प्रदान करता है। – jforberg
चूंकि सामान्य लिस्प में फ़ंक्शन मनमाने ढंग से लंबी तर्क सूचियों की अनुमति नहीं देते हैं, इसलिए APPLY को RedUCE के साथ प्रतिस्थापित करना सबसे अच्छा है। परिवर्तनीय कॉल-ARGUMENTS-LIMIT के मान देखें। एक कार्यान्वयन कॉल-ARGUMENTS-LIMIT लंबी तर्क सूचियों तक का समर्थन करता है। आपके उदाहरण में इसका अर्थ यह होगा कि एक कार्यान्वयन कॉल-ARGUMENTS-LIMIT + 1 लंबी सूचियों पर अधिकतम गणना करने में विफल हो सकता है। ध्यान दें कि यह कॉल-ARGUMENTS-LIMIT का मान 50 (!) जितना छोटा हो सकता है। –
@RainerJoswig: ओह आप पूरी तरह से सही हैं। – Daimrod