2014-05-22 6 views
21

LISP में एक चर के लिए मान निर्दिष्ट करने के लिए setf फ़ंक्शन है। अब मैं फ़ंक्शन के नाम के बारे में सोच रहा हूं: set भाग स्पष्ट है, लेकिन f प्रत्यय के लिए क्या खड़ा है?सेटफ में एफ के लिए क्या खड़ा है?

+4

+1 यह एक दिलचस्प सवाल है। यह जरूरी नहीं है कि एक प्रोग्रामिंग प्रश्न, प्रति से, (क्योंकि यह ** ** सेटफ का उपयोग करने के बारे में नहीं है), लेकिन यह एक स्पष्ट उत्तर के साथ नहीं है, और नामकरण सम्मेलनों और इतिहास को समझने में अक्सर भाषा के प्रोग्रामर के मानसिक मॉडल की मदद मिल सकती है । (संयोग से, 'setq 'में' q' आसान है। पुराने लिस्पस में जहां प्रतीक का' प्रतीक-मान 'का उपयोग करना अधिक आम था,' '(set' foo ...) 'को संक्षिप्त करना अच्छा था (setq foo ...) '(इसलिए q 'उद्धरण' के लिए है)।) –

+0

इस अच्छी टिप्पणी के लिए धन्यवाद :-))। मेरे लिए एक एलआईएसपी शुरुआती के रूप में कुछ नाम समझने में कठिनाई होती है, एक और उदाहरण 'शाम' और 'oddp' है: मुझे आश्चर्य है कि' पी 'क्या है, और यह निश्चित रूप से कार्यों को याद रखने में मदद करता है यदि आप वास्तव में उनके नाम समझते हैं (और इसलिए उनका अर्थ)। –

+4

पी "predicate" के लिए खड़ा है –

उत्तर

30

एफ का वास्तविक अर्थ अक्सर भूल जाता है। कुछ सूत्रों के अनुसार, च प्रत्यय खड़े कर सकता है के लिए:

  • फील्ड (उदाहरण के लिए देखें इस answer)
  • फार्म

हालांकि (के रूप में विभिन्न शिक्षण सामग्री और मैनुअल में देखा), गेब्रियल के अनुसार और स्टील का The Evolution of Lisp, एसईटीएफ पीटर Deutsch के A Lisp Machine with Very Compact Programs (1 9 73 में प्रकाशित) से आता है और एफ फ़ंक्शन के लिए खड़ा है।

इस पत्र में, पीटर Deutsch लिखा है:

सेट समारोह बढ़ाया है ताकि ताकि यदि पहला तर्क एक सूची (fn argl ... argn) के बजाय एक चर रहा है, समारोह fn "स्टोर" मोड में कहा जाता है तर्क argl ... argn और newvalue (एसईटी का दूसरा तर्क) के साथ। एसईटीक्यू को भी स्पष्ट तरीके से बढ़ाया गया है, लेकिन यह विशेष रूप से उपयोगी नहीं है। एक और उपयोगी कार्य (SETFQ (fn argl ... argn) newvalue) है जो उद्धरणफ़ंक्शन नाम और अन्य सभी का मूल्यांकन करता है। यह RPLACA को उदाहरण के लिए (LAMBDA (X Y) (SETFQ (CAR X) Y)) के रूप में परिभाषित करने की अनुमति देता है।

यह नाम लिस्प मशीन लिस्प में SETF को संक्षिप्त किया गया था:

(जोर मेरा)

गेब्रियल और स्टील यह कैसे SETF बन समझाने।

+0

इसे इंगित करने के लिए धन्यवाद, अब मुझे पता है कि किस शब्द को देखना है :-)! –

+0

@GoloRoden 2 विरोधाभासी उत्तर हैं, आप कैसे जानते हैं कि यह सही है? – henginy

+0

मैं * यह नहीं जानता कि यह सही है, लेकिन मैं दोनों शर्तों के लिए googled और एक और (काफी उत्थान) [उत्तर] (http://stackoverflow.com/a/869693/1333873) पाया जो सुझाव देता है कि यह 'फ़ील्ड' है , 'फॉर्म' नहीं। इसके अलावा, यह उत्तर अधिक उपयोगी है क्योंकि यह भी बताता है कि 'q' क्या है। –

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