मैं योजना में एक गलती कैसे जोड़ूं?

एक गलती (एसोसिएटिव सूची) के सिर में एक तत्व जोड़ना काफी सरल है:

> (cons '(ding . 53) '((foo . 42) (bar . 27)))
((ding . 53) (foo . 42) (bar . 27))

एक गलती की पूंछ में शामिल होने के बावजूद थोड़ा सा trickier है। कुछ प्रयोग करने के बाद, मैंने इसे बनाया:

> (define (alist-append alist pair) `(,@alist ,pair))
> (alist-append '((foo . 42) (bar . 27)) '(ding . 53))
'((foo . 42) (bar . 27) (ding . 53))

हालांकि, मुझे ऐसा लगता है कि यह मूर्खतापूर्ण समाधान नहीं है। तो यह आमतौर पर योजना में कैसे किया जाता है? या यह वास्तव में रास्ता है?

0
तो मैं हूं;) गंभीरता से हालांकि, यह विदेशी नहीं है जैसा कि यह प्रतीत होता है; यह सिर्फ एक मजाकिया वाक्यविन्यास है। थोड़ी देर बाद, आप अजीबता को देखते हुए रोकते हैं। मैं सिर्फ योजना के साथ शौक-हैकिंग कर रहा हूं, फिर भी मैं इसे पहले से ही इस्तेमाल कर चुका हूं।
जोड़ा लेखक troelskn, स्रोत
मुझे उन लोगों के भय है जो योजना जैसी भाषाओं को समझ सकते हैं
जोड़ा लेखक Danimal, स्रोत

1 उत्तर

सामान्य लिस्प वास्तव में इस उद्देश्य के लिए ACONS नामक फ़ंक्शन को परिभाषित करता है, जहां

(acons key value alist)

के बराबर है:

(cons (cons key value) alist)

यह दृढ़ता से सुझाव देता है कि केवल एक अलगाव पर ध्यान देना मूर्खतापूर्ण है। ध्यान दें कि इसका मतलब दो चीजें हैं:

  1. चूंकि खोज आमतौर पर सामने से पीछे की जाती हैं, हाल ही में जोड़े गए संगठन पुराने लोगों पर प्राथमिकता लेते हैं। इसका उपयोग व्याख्यात्मक और गतिशील वातावरण दोनों के निष्पक्ष कार्यान्वयन के लिए किया जा सकता है।
  2. सूची में शामिल होने पर ओ (1) होता है, आमतौर पर ओ (एन) संलग्न होता है जहां एन सूची की लंबाई होती है, इसलिए प्रदर्शन के लिए बेवकूफ उपयोग सर्वोत्तम होता है और स्टाइलिस्टिक रूप से बेहतर होता है।
0
जोड़ा