2014-09-17 5 views
7

पहले मैं एक अज्ञात प्रकार के अनुक्रम पर पुनरावृत्ति के लिए लूप की विशेषता के तत्वों का उपयोग कर रहा था। मुझे अभी पता चला है कि "के तत्व होने के नाते" सामान्य लिस्प के हर कार्यान्वयन में प्रदान नहीं किया गया है और मुझे आश्चर्य है कि क्या लूप का उपयोग करके अनुक्रम पर पुनरावृत्ति करने का कोई साफ तरीका है। सबसे अच्छा समाधान जिसके साथ मैं आने में सक्षम हूं, अनुक्रम को एक सूची में जोड़ना है और फिर उस पर फिर से शुरू करना है।लूप के साथ आम लिस्प में अनुक्रम पर पुनरावृत्ति कैसे करें?

उत्तर

10

नहीं, LOOP ऐसी सुविधा प्रदान नहीं करता है। यदि आपका LOOP कार्यान्वयन एक्स्टेंसिबल है (जो मानक भी कुछ भी नहीं कहता है), तो आप ऐसी सुविधा को लागू करने में सक्षम हो सकते हैं। for item in list - - और एक वेक्टर से अधिक पुनरावृति करने के लिए एक खंड - for e across vector - ध्यान दें कि तार भी एक आयामी सरणियों हैं वेक्टर,

LOOP खंड सूचियों से अधिक पुनरावृति करना पड़ता है। लेकिन दोनों एक साथ नहीं।

अन्यथा अनुक्रमों पर पुनरावृत्त करने के लिए MAP या MAP-INTO का उपयोग करें।

ITERATE मैक्रो ऐसी सुविधा प्रदान करता है: for i in-sequence seq

संबंधित मुद्दे