एम-एक्सप्रेशन: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Proposed syntax for the Lisp language}}
{{Short description|Proposed syntax for the Lisp language}}
[[File:John McCarthy Stanford.jpg|thumb|100px|जॉन मैक्कार्थी]][[कंप्यूटर प्रोग्रामिंग]] में, एम-एक्सप्रेशन (या मेटा-एक्सप्रेशन) [[लिस्प (प्रोग्रामिंग भाषा)]] के लिए प्रारंभिक प्रस्तावित वाक्यविन्यास था, जो [[फोरट्रान]] और एएलजीओएल जैसी समकालीन भाषाओं से प्रेरित था। नोटेशन को कभी भी भाषा में लागू नहीं किया गया और, इस प्रकार, इसे कभी भी अंतिम रूप नहीं दिया गया।<ref>{{Cite web|url=http://www-formal.stanford.edu/jmc/history/lisp/node3.html|title=एलआईएसपी का कार्यान्वयन|website=www-formal.stanford.edu|access-date=2020-03-29}}</ref>
[[File:John McCarthy Stanford.jpg|thumb|100px|जॉन मैक्कार्थी]][[कंप्यूटर प्रोग्रामिंग]] में, '''एम-एक्सप्रेशन (या मेटा-एक्सप्रेशन)''' [[लिस्प (प्रोग्रामिंग भाषा)]] के लिए प्रारंभिक प्रस्तावित वाक्य विन्यास था, जो [[फोरट्रान]] और एएलजीओएल जैसी समकालीन भाषाओं से प्रेरित था। नोटेशन को कभी भी भाषा में प्रयुक्त नहीं किया गया और, इस प्रकार, इसे कभी भी अंतिम रूप नहीं दिया गया था।<ref>{{Cite web|url=http://www-formal.stanford.edu/jmc/history/lisp/node3.html|title=एलआईएसपी का कार्यान्वयन|website=www-formal.stanford.edu|access-date=2020-03-29}}</ref>
[[ एस-अभिव्यक्ति ]] की तुलना में, एम-एक्सप्रेशन [[फ़ंक्शन संकेतन]], [[इन्फ़िक्स ऑपरेटर]] (ए सहित) पेश करते हैं {{code|defun}} ऑपरेटर), और शॉर्टहैंड के लिए {{code|cond|lisp}} और {{code|list}} भाषा में.<ref name=LISP15/>
[[ एस-अभिव्यक्ति |एस-एक्सप्रेशन]] की तुलना में, एम-एक्सप्रेशन [[फ़ंक्शन संकेतन|फ़ंक्शन नोटेशन]], [[इन्फ़िक्स ऑपरेटर]] (ए {{code|defun}} ऑपरेटर सहित), और शॉर्टहैंड के लिए {{code|cond|lisp}} और {{code|list}} भाषा में प्रस्तुत करते हैं.<ref name=LISP15/>
 


==पृष्ठभूमि==
==पृष्ठभूमि==
जॉन मैक्कार्थी (कंप्यूटर वैज्ञानिक) ने 1960 में [[मैसाचुसेट्स की तकनीकी संस्था]] में रिसर्च फेलो रहते हुए लिस्प पर पहला पेपर प्रकाशित किया था। इसमें उन्होंने प्रतीकात्मक अभिव्यक्तियों (एस-एक्सप्रेशन) की भाषा का वर्णन किया जो जटिल संरचनाओं को सूचियों के रूप में प्रस्तुत कर सकती है। फिर उन्होंने एस-एक्सप्रेशन पर आदिम संचालन का सेट और मेटा-एक्सप्रेशन (एम-एक्सप्रेशन) की भाषा को परिभाषित किया जिसका उपयोग अधिक जटिल संचालन को परिभाषित करने के लिए किया जा सकता है। अंत में, उन्होंने दिखाया कि मेटा-भाषा को एस-एक्सप्रेशन के साथ कैसे दर्शाया जा सकता है, जिसके परिणामस्वरूप ऐसी प्रणाली तैयार हुई जो संभावित रूप से [[स्व-होस्टिंग (संकलक)]]कंपाइलर)|सेल्फ-होस्टिंग थी।<ref name="lisp1960">McCarthy, John (April 1960) "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I"</ref> इस पेपर के ड्राफ्ट संस्करण को एआई मेमो 8 के नाम से जाना जाता है।<ref>{{cite web |last1=McCarthy |first1=John |title=Recursive Functions of Symbolic Expressions and Their Computation by Machine (AI Memo 8) |url=https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/aim-8/index.html |date=March 1959}}</ref>
जॉन मैक्कार्थी (कंप्यूटर वैज्ञानिक) ने 1960 में [[मैसाचुसेट्स की तकनीकी संस्था]] में रिसर्च फेलो रहते हुए लिस्प पर पहला पेपर प्रकाशित किया था। इसमें उन्होंने प्रतीकात्मक एक्सप्रेशनयों (एस-एक्सप्रेशन) की भाषा का वर्णन किया जो जटिल संरचनाओं को सूचियों के रूप में प्रस्तुत कर सकती है। फिर उन्होंने एस-एक्सप्रेशन पर आदिम संचालन का सेट और मेटा-एक्सप्रेशन (एम-एक्सप्रेशन) की भाषा को परिभाषित किया जिसका उपयोग अधिक जटिल संचालन को परिभाषित करने के लिए किया जा सकता है। अंत में, उन्होंने दिखाया कि मेटा-भाषा को एस-एक्सप्रेशन के साथ कैसे दर्शाया जा सकता है, जिसके परिणामस्वरूप ऐसी प्रणाली तैयार हुई जो संभावित रूप से [[स्व-होस्टिंग (संकलक)]]कंपाइलर) सेल्फ-होस्टिंग थी।<ref name="lisp1960">McCarthy, John (April 1960) "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I"</ref> इस पेपर के ड्राफ्ट संस्करण को एआई मेमो 8 के नाम से जाना जाता है।<ref>{{cite web |last1=McCarthy |first1=John |title=Recursive Functions of Symbolic Expressions and Their Computation by Machine (AI Memo 8) |url=https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/aim-8/index.html |date=March 1959}}</ref>


{| class="wikitable"
{| class="wikitable"
|+ Example M-expressions (LISP 1.5, 1965)<ref name=LISP15/>
|+ उदाहरण एम-एक्सप्रेशन (लिस्प) 1.5, 1965)<ref name=LISP15/>
! Expression type
! एक्सप्रेशन प्रकार
! Mathematical notation
! गणितीय नोटेशन
! M-expression
! एम-एक्सप्रेशन
! Modern Lisp S-expression
! आधुनिक लिस्प एस-एक्सप्रेशन
|-
|-
| List value
| सूची मान
| <math>(1, 2, 3)</math>
| <math>(1, 2, 3)</math>
| {{code|[1;2;3]}}
| {{code|[1;2;3]}}
| {{code|2=lisp|(quote (1 2 3))}}
| {{code|2=lisp|(quote (1 2 3))}}
|-
|-
| Function application
| कार्य अनुप्रयोग
| <math>f(x, y)</math>
| <math>f(x, y)</math>
| {{code|f[x;y]}}
| {{code|f[x;y]}}
| {{code|2=lisp|(f x y)}}
| {{code|2=lisp|(f x y)}}
|-
|-
| Function definition
| फ़ंक्शन परिभाषा
| <math>\mathrm{square}: x \mapsto x \cdot x</math>
| <math>\mathrm{square}: x \mapsto x \cdot x</math>
| {{code|1=label[square;λ[[x];times[x;x]]]}}
| {{code|1=label[square;λ[[x];times[x;x]]]}}
| {{code|2=lisp|(define square (lambda (x) (* x x)))}}
| {{code|2=lisp|(define square (lambda (x) (* x x)))}}
|-
|-
| Conditional expression
| सशर्त एक्सप्रेशन
| <math>\begin{cases}
| <math>\begin{cases}
   -x, & \text{if } x < 0 \\
   -x, & \text{if } x < 0 \\
Line 38: Line 37:
| {{code|2=lisp|(cond ((< x 0) (- x)) (t x))}}
| {{code|2=lisp|(cond ((< x 0) (- x)) (t x))}}
|}
|}
मैककार्थी ने कंपाइलर की आंतरिक प्रक्रियाओं का वर्णन करने के लिए भाषा सिंटैक्स के रूप में एम-एक्सप्रेशन और एस-एक्सप्रेशन का उपयोग करके स्वचालित लिस्प कंपाइलर ([[एलआईएसपी 2]]) विकसित करने की योजना बनाई थी। स्टीव रसेल (कंप्यूटर वैज्ञानिक)|स्टीफन बी. रसेल ने पेपर पढ़ा और उन्हें सुझाव दिया कि एस-एक्सप्रेशन अधिक सुविधाजनक वाक्यविन्यास है। हालाँकि मैक्कार्थी ने इस विचार को अस्वीकार कर दिया, रसेल और उनके सहयोगी डेनियल जे. एडवर्ड्स ने [[ दुभाषिया (कंप्यूटिंग) ]] प्रोग्राम को हाथ से कोड किया जो एस-एक्सप्रेशन को निष्पादित कर सकता था।<ref name=LISP15>{{cite web |url=http://community.computerhistory.org/scc/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf |date=1965|title=LISP 1.5 Programmer's Manual |publisher=Community.computerhistory.org |access-date=2013-09-02 |url-status=dead |archive-url=https://web.archive.org/web/20060211020233/http://community.computerhistory.org/scc/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf |archive-date=2006-02-11 }}</ref> इस कार्यक्रम को मैक्कार्थी के अनुसंधान समूह द्वारा अपनाया गया, जिससे एस-अभिव्यक्ति को लिस्प के प्रमुख रूप के रूप में स्थापित किया गया।
मैककार्थी ने कंपाइलर की आंतरिक प्रक्रियाओं का वर्णन करने के लिए भाषा सिंटैक्स के रूप में एम-एक्सप्रेशन और एस-एक्सप्रेशन का उपयोग करके स्वचालित लिस्प कंपाइलर ([[एलआईएसपी 2]]) विकसित करने की योजना बनाई थी। स्टीव रसेल (कंप्यूटर वैज्ञानिक) या स्टीफन बी. रसेल ने पेपर पढ़ा और उन्हें सुझाव दिया कि एस-एक्सप्रेशन अधिक सुविधाजनक वाक्यविन्यास है। चूँकि मैक्कार्थी ने इस विचार को अस्वीकार कर दिया, रसेल और उनके सहयोगी डेनियल जे. एडवर्ड्स ने [[ दुभाषिया (कंप्यूटिंग) ]] प्रोग्राम को हाथ से कोड किया जो एस-एक्सप्रेशन को निष्पादित कर सकता था।<ref name=LISP15>{{cite web |url=http://community.computerhistory.org/scc/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf |date=1965|title=LISP 1.5 Programmer's Manual |publisher=Community.computerhistory.org |access-date=2013-09-02 |url-status=dead |archive-url=https://web.archive.org/web/20060211020233/http://community.computerhistory.org/scc/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf |archive-date=2006-02-11 }}</ref> इस प्रोग्राम को मैक्कार्थी के अनुसंधान समूह द्वारा अपनाया गया, जिससेएस-एक्सप्रेशन को लिस्प के प्रमुख रूप के रूप में स्थापित किया गया था।


मैक्कार्थी ने 1979 में एम-एक्सप्रेशन के भाग्य पर विचार किया:
मैक्कार्थी ने 1979 में एम-एक्सप्रेशन के भाग्य पर विचार किया था:


{{quote|The project of defining M-expressions precisely and compiling them or at least translating them into S-expressions was neither finalized nor explicitly abandoned. It just receded into the indefinite future, and a new generation of programmers appeared who preferred internal notation to any FORTRAN-like or ALGOL-like notation that could be devised.<ref>{{cite web|url=http://www-formal.stanford.edu/jmc/history/lisp/node3.html |title=The implementation of LISP |publisher=Formal.stanford.edu |date=1979-02-12 |access-date=2013-08-24}}</ref>|''[http://www-formal.stanford.edu/jmc/history/lisp/lisp.html History of Lisp]''}}
{{quote|एम-अभिव्यक्तियों को सटीक रूप से परिभाषित करने और उन्हें संकलित करने या कम से कम उन्हें एस-अभिव्यक्तियों में अनुवाद करने की परियोजना को न तो अंतिम रूप दिया गया था और न ही स्पष्ट रूप से छोड़ा गया था। यह बस अनिश्चित भविष्य में सिमट गया, और प्रोग्रामर की एक नई पीढ़ी सामने आई, जिन्होंने किसी भी फोरट्रान-जैसे या एल्गोल-जैसे नोटेशन के बजाय आंतरिक नोटेशन को प्राथमिकता दी, जिसे तैयार किया जा सकता था।.<ref>{{cite web|url=http://www-formal.stanford.edu/jmc/history/lisp/node3.html |title=The implementation of LISP |publisher=Formal.stanford.edu |date=1979-02-12 |access-date=2013-08-24}}</ref>|''[http://www-formal.stanford.edu/jmc/history/lisp/lisp.html History of Lisp]''}}


== कार्यान्वयन ==
== कार्यान्वयन ==


[[सिंटेक्स शुगर]] एम-एक्सप्रेशन का रूप 1988 से [[वोल्फ्राम मैथमैटिका]] की [[वोल्फ्राम भाषा]] में लागू किया गया है:
[[सिंटेक्स शुगर]] एम-एक्सप्रेशन का रूप 1988 से [[वोल्फ्राम मैथमैटिका]] की [[वोल्फ्राम भाषा]] में प्रयुक्त किया गया है:
{| class="wikitable plainrowheaders"
{| class="wikitable plainrowheaders"
|+ Example Wolfram snippets
|+ उदाहरण वुल्फ्राम स्निपेट्स
! colspan="2" | Expression type
! colspan="2" | एक्सप्रेशन प्रकार
! Sugared syntax (InputForm)
! सुगन्धित वाक्यविन्यास (इनपुटफॉर्म)
! Function form (FullForm)
! फ़ंक्शन फॉर्म (पूर्ण प्रपत्र)
|-
|-
! scope="row" colspan="2" | List value
! scope="row" colspan="2" | सूची मान
| {{code|2=mathematica|{{mset|1, 2, 3}}}}
| {{code|2=mathematica|{{mset|1, 2, 3}}}}
| {{code|2=mathematica|List[1, 2, 3]}}
| {{code|2=mathematica|List[1, 2, 3]}}
|-
|-
! scope="row" colspan="2" | Function application
! scope="row" colspan="2" | फ़ंक्शन अनुप्रयोग
| {{code|f[x, y]}}
| {{code|f[x, y]}}
| {{code|f[x, y]}}
| {{code|f[x, y]}}
|-
|-
! scope="row" rowspan="3" | Function definition
! scope="row" rowspan="3" | फ़ंक्शन परिभाषा
! scope="row" | pure
! scope="row" | प्योर
| {{code|2=mathematica|1=square = #*# &}}
| {{code|2=mathematica|1=square = #*# &}}
| {{code|2=mathematica|1=Set[square, Function[Times[Slot[1],Slot[1]]]]}}
| {{code|2=mathematica|1=Set[square, Function[Times[Slot[1],Slot[1]]]]}}


|-
|-
! scope="row" | named
! scope="row" | नामांकित
| {{code|2=mathematica|1=square = x ↦ x*x}}
| {{code|2=mathematica|1=square = x ↦ x*x}}
| {{code|1=Set[square, Function[x, Times[x, x]]]}}
| {{code|1=Set[square, Function[x, Times[x, x]]]}}
|-
|-
! scope="row" | pattern
! scope="row" | क्रम
| {{code|2=mathematica|1=square[x_] := x*x}}
| {{code|2=mathematica|1=square[x_] := x*x}}
| {{code|1=SetDelayed[square[Pattern[x, Blank[]]], Times[x, x]]}}
| {{code|1=SetDelayed[square[Pattern[x, Blank[]]], Times[x, x]]}}
|-
|-
! scope="row" colspan="2" | Conditional expression{{NoteTag|Conditionals take more to explain, as the general conditional system in the language relies on [[pattern matching]] and [[rewriting]].<ref>{{cite book |title=Mathematica as a Rewrite Language |url=https://www.researchgate.net/publication/243768023}}</ref>}}
! scope="row" colspan="2" | सशर्त एक्सप्रेशन
<math display="block">\begin{cases}
<math display="block">\begin{cases}
   -x, & \text{if } x < 0 \\
   -x, & \text{if } x < 0 \\
Line 88: Line 87:
===एलआईएसपी के लिए ===
===एलआईएसपी के लिए ===


एमएलस्प लिस्प के लिए एम-एक्सप्रेशन-जैसे फ्रंटएंड को लागू करने के लिए समकालीन (1968-1973) परियोजना थी। [[स्वच्छ मैक्रो]]ज़, [[पैटर्न मिलान]] और [[ बैक ट्रैकिंग ]] जैसी कुछ अतिरिक्त सुविधाएँ शामिल की गईं। यह अंततः परित्यक्त [[LISP70]] ड्राफ्ट में विकसित हुआ। 1989 से [[एम.एल.आई.एस.पी]] ([[मेटाएलआईएसपी]]) योजना के साथ एम-एक्सप्रेशन को मिश्रित करने का और प्रयास था।<ref name="xl"/>
एमएलस्प लिस्प के लिए एम-एक्सप्रेशन-जैसे फ्रंटएंड को प्रयुक्त करने के लिए समकालीन (1968-1973) परियोजना थी। [[स्वच्छ मैक्रो]]ज़, [[पैटर्न मिलान]] और [[ बैक ट्रैकिंग ]] जैसी कुछ अतिरिक्त सुविधाएँ सम्मिलित की गईं थी। यह अंततः परित्यक्त [[LISP70|लिस्प70]] ड्राफ्ट में विकसित हुआ था। 1989 से [[एम.एल.आई.एस.पी]] ([[मेटाएलआईएसपी]]) योजना के साथ एम-एक्सप्रेशन को मिश्रित करने का और प्रयास था।<ref name="xl"/>


[[एआई मेमो]] 8 एम-एक्सप्रेशन के लिए पार्सर [[ सामान्य लिस्प ]] में उपलब्ध है, लेकिन मैक्रोज़ के साथ सामना करने में असमर्थता के कारण लेखक इसे एम-एक्सप्रेशन के खिलाफ मामले के रूप में चाहता है।<ref>{{cite web |title=एम-एक्सप्रेशन के लिए एक पार्सर|url=https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/m-expression/ |quote=Let's newbies play with them, and realize how impractical they are. Note for example, that we cannot use macros anymore because their syntax would need to be known by the M-expression parser.}}</ref>
[[एआई मेमो]] 8 एम-एक्सप्रेशन के लिए पार्सर [[ सामान्य लिस्प ]] में उपलब्ध है, किन्तु मैक्रोज़ के साथ सामना करने में असमर्थता के कारण लेखक इसे एम-एक्सप्रेशन के विरुद्ध स्थिति के रूप में चाहता है।<ref>{{cite web |title=एम-एक्सप्रेशन के लिए एक पार्सर|url=https://www.informatimago.com/develop/lisp/com/informatimago/small-cl-pgms/m-expression/ |quote=Let's newbies play with them, and realize how impractical they are. Note for example, that we cannot use macros anymore because their syntax would need to be known by the M-expression parser.}}</ref>




=== के के लिए ===
=== के के लिए ===


[[एपीएल (प्रोग्रामिंग भाषा)]]-परंपरा में अधिक संक्षिप्त नोटेशन के अलावा, [[के (प्रोग्रामिंग भाषा)]] में एम-एक्सप्रेशन भी शामिल है।
[[एपीएल (प्रोग्रामिंग भाषा)]]-परंपरा में अधिक संक्षिप्त नोटेशन के अतिरिक्त, [[के (प्रोग्रामिंग भाषा)]] में एम-एक्सप्रेशन भी सम्मिलित है।


{{sxhl|lang=k|
{{sxhl|lang=k|
Line 111: Line 110:


==आगे का विकास==
==आगे का विकास==
[[मैकलिस्प]] में [[ COLL ]] (1977) लागू किया गया था और यह इन्फिक्स ऑपरेटरों के साथ अल्गोल-जैसे सिंटैक्स को पेश करने के समान लक्ष्य का पालन करता है।<ref name="xl">{{cite web |last1=Lee |first1=Xah |title=एलआईएसपी इंफिक्स सिंटैक्स सर्वे|url=http://xahlee.info/comp/lisp_sans_sexp.html}}</ref> यह [[सशस्त्र भालू आम लिस्प]] पर काम करने के लिए जाना जाता है।<ref name="armed bear">[http://abcl-dev.blogspot.co.uk/2010/04/cgol-on-abcl.html CGOL on ABCL] ''Development of the Armed Bear Common Lisp implementation'' blog.</ref>
[[मैकलिस्प]] में [[ COLL |कोल]] (1977) प्रयुक्त किया गया था और यह इन्फिक्स ऑपरेटरों के साथ अल्गोल-जैसे सिंटैक्स को प्रस्तुत करने के समान लक्ष्य का पालन करता है।<ref name="xl">{{cite web |last1=Lee |first1=Xah |title=एलआईएसपी इंफिक्स सिंटैक्स सर्वे|url=http://xahlee.info/comp/lisp_sans_sexp.html}}</ref> यह [[सशस्त्र भालू आम लिस्प|सशस्त्र बेयर कॉमन लिस्प]] पर काम करने के लिए जाना जाता है।<ref name="armed bear">[http://abcl-dev.blogspot.co.uk/2010/04/cgol-on-abcl.html CGOL on ABCL] ''Development of the Armed Bear Common Lisp implementation'' blog.</ref>
 
एक और वर्तमान (लगभग 2003) संस्करण आई-एक्सप्रेशन है, जो कोष्ठक को स्पष्ट रूप से इंगित करने के लिए [[ऑफ-साइड नियम]] का उपयोग करता है, और इस प्रकार कुछ मायनों में एस-एक्सप्रेशन और एम-एक्सप्रेशन के बीच मध्यवर्ती है। आई-एक्सप्रेशन को [[कार्यान्वयन के लिए योजना अनुरोध]] 49 में स्कीम (प्रोग्रामिंग लैंग्वेज) के सहायक सिंटैक्स के रूप में प्रस्तुत किया गया था, किन्तु उन्हें व्यापक रूप से नहीं अपनाया गया है।<ref>{{cite web |last1=Möller |first1=Egil |title=SRFI 49: Indentation-sensitive syntax |url=http://srfi.schemers.org/srfi-49/srfi-49.html |website=srfi.schemers.org |date=2003}}</ref>
 
एक और विकास स्वीट टी-एक्सप्रेशन है, जिसमें बिना किसी पूर्वता के इन्फ़िक्स ऑपरेटर हैं। आई-एक्सप्रेशन की तरह, टी-एक्सप्रेशन एस-एक्सप्रेशन से दूर केवल सरल परिवर्तन है, जिससे सैद्धांतिक रूप से उनका उपयोग किसी भी लिस्प बोली पर किया जा सके और मैक्रोज़ जैसी सुविधाओं में हस्तक्षेप न किया जा सकता है।<ref>{{cite web |last1=Wheeler |first1=DA |title=SRFI 110: Sweet-expressions (t-expressions) |url=https://srfi.schemers.org/srfi-110/srfi-110.html |website=srfi.schemers.org |date=2013}}</ref>


एक और हालिया (लगभग 2003) संस्करण आई-एक्सप्रेशन है, जो कोष्ठक को स्पष्ट रूप से इंगित करने के लिए [[ऑफ-साइड नियम]] का उपयोग करता है, और इस प्रकार कुछ मायनों में एस-एक्सप्रेशन और एम-एक्सप्रेशन के बीच मध्यवर्ती है। I-एक्सप्रेशन को [[कार्यान्वयन के लिए योजना अनुरोध]] 49 में स्कीम (प्रोग्रामिंग लैंग्वेज) के सहायक सिंटैक्स के रूप में पेश किया गया था, लेकिन उन्हें व्यापक रूप से नहीं अपनाया गया है।<ref>{{cite web |last1=Möller |first1=Egil |title=SRFI 49: Indentation-sensitive syntax |url=http://srfi.schemers.org/srfi-49/srfi-49.html |website=srfi.schemers.org |date=2003}}</ref>
अतिरिक्त सिंटैक्स-संबंधी में ऐप्पल की [[डायलन (प्रोग्रामिंग भाषा)]] (अल्गोल-जैसे टोकन) और [[क्लोजर]] द्वारा अन्य शाब्दिक सिंटैक्स को सम्मिलित करना सम्मिलित है।<ref name="xl" />


एक और विकास स्वीट टी-एक्सप्रेशन है, जिसमें बिना किसी पूर्वता के इन्फ़िक्स ऑपरेटर हैं। आई-एक्सप्रेशन की तरह, टी-एक्सप्रेशन एस-एक्सप्रेशन से दूर केवल सरल परिवर्तन है, ताकि सैद्धांतिक रूप से उनका उपयोग किसी भी लिस्प बोली पर किया जा सके और मैक्रोज़ जैसी सुविधाओं में हस्तक्षेप न किया जा सके।<ref>{{cite web |last1=Wheeler |first1=DA |title=SRFI 110: Sweet-expressions (t-expressions) |url=https://srfi.schemers.org/srfi-110/srfi-110.html |website=srfi.schemers.org |date=2013}}</ref>
अतिरिक्त सिंटैक्स-संबंधी में ऐप्पल की [[डायलन (प्रोग्रामिंग भाषा)]] (अल्गोल-जैसे टोकन) और [[क्लोजर]] द्वारा अन्य शाब्दिक सिंटैक्स को शामिल करना शामिल है।<ref name="xl"/>




==टिप्पणियाँ==
==टिप्पणियाँ                                                                                                                                                                                                 ==
{{NoteFoot}}
{{NoteFoot}}




==संदर्भ==
==संदर्भ                                                                                                                                                                                                           ==
<references/>
<references/>
[[Category: लिस्प (प्रोग्रामिंग भाषा)]]  
[[Category: लिस्प (प्रोग्रामिंग भाषा)]]  

Revision as of 15:47, 7 July 2023

जॉन मैक्कार्थी

कंप्यूटर प्रोग्रामिंग में, एम-एक्सप्रेशन (या मेटा-एक्सप्रेशन) लिस्प (प्रोग्रामिंग भाषा) के लिए प्रारंभिक प्रस्तावित वाक्य विन्यास था, जो फोरट्रान और एएलजीओएल जैसी समकालीन भाषाओं से प्रेरित था। नोटेशन को कभी भी भाषा में प्रयुक्त नहीं किया गया और, इस प्रकार, इसे कभी भी अंतिम रूप नहीं दिया गया था।[1]

एस-एक्सप्रेशन की तुलना में, एम-एक्सप्रेशन फ़ंक्शन नोटेशन, इन्फ़िक्स ऑपरेटर (ए defun ऑपरेटर सहित), और शॉर्टहैंड के लिए cond और list भाषा में प्रस्तुत करते हैं.[2]

पृष्ठभूमि

जॉन मैक्कार्थी (कंप्यूटर वैज्ञानिक) ने 1960 में मैसाचुसेट्स की तकनीकी संस्था में रिसर्च फेलो रहते हुए लिस्प पर पहला पेपर प्रकाशित किया था। इसमें उन्होंने प्रतीकात्मक एक्सप्रेशनयों (एस-एक्सप्रेशन) की भाषा का वर्णन किया जो जटिल संरचनाओं को सूचियों के रूप में प्रस्तुत कर सकती है। फिर उन्होंने एस-एक्सप्रेशन पर आदिम संचालन का सेट और मेटा-एक्सप्रेशन (एम-एक्सप्रेशन) की भाषा को परिभाषित किया जिसका उपयोग अधिक जटिल संचालन को परिभाषित करने के लिए किया जा सकता है। अंत में, उन्होंने दिखाया कि मेटा-भाषा को एस-एक्सप्रेशन के साथ कैसे दर्शाया जा सकता है, जिसके परिणामस्वरूप ऐसी प्रणाली तैयार हुई जो संभावित रूप से स्व-होस्टिंग (संकलक)कंपाइलर) सेल्फ-होस्टिंग थी।[3] इस पेपर के ड्राफ्ट संस्करण को एआई मेमो 8 के नाम से जाना जाता है।[4]

उदाहरण एम-एक्सप्रेशन (लिस्प) 1.5, 1965)[2]
एक्सप्रेशन प्रकार गणितीय नोटेशन एम-एक्सप्रेशन आधुनिक लिस्प एस-एक्सप्रेशन
सूची मान [1;2;3] (quote (1 2 3))
कार्य अनुप्रयोग f[x;y] (f x y)
फ़ंक्शन परिभाषा label[square;λ[[x];times[x;x]]] (define square (lambda (x) (* x x)))
सशर्त एक्सप्रेशन [lessp[x;0] → minus[x]; T → x] (cond ((< x 0) (- x)) (t x))

मैककार्थी ने कंपाइलर की आंतरिक प्रक्रियाओं का वर्णन करने के लिए भाषा सिंटैक्स के रूप में एम-एक्सप्रेशन और एस-एक्सप्रेशन का उपयोग करके स्वचालित लिस्प कंपाइलर (एलआईएसपी 2) विकसित करने की योजना बनाई थी। स्टीव रसेल (कंप्यूटर वैज्ञानिक) या स्टीफन बी. रसेल ने पेपर पढ़ा और उन्हें सुझाव दिया कि एस-एक्सप्रेशन अधिक सुविधाजनक वाक्यविन्यास है। चूँकि मैक्कार्थी ने इस विचार को अस्वीकार कर दिया, रसेल और उनके सहयोगी डेनियल जे. एडवर्ड्स ने दुभाषिया (कंप्यूटिंग) प्रोग्राम को हाथ से कोड किया जो एस-एक्सप्रेशन को निष्पादित कर सकता था।[2] इस प्रोग्राम को मैक्कार्थी के अनुसंधान समूह द्वारा अपनाया गया, जिससेएस-एक्सप्रेशन को लिस्प के प्रमुख रूप के रूप में स्थापित किया गया था।

मैक्कार्थी ने 1979 में एम-एक्सप्रेशन के भाग्य पर विचार किया था:

एम-अभिव्यक्तियों को सटीक रूप से परिभाषित करने और उन्हें संकलित करने या कम से कम उन्हें एस-अभिव्यक्तियों में अनुवाद करने की परियोजना को न तो अंतिम रूप दिया गया था और न ही स्पष्ट रूप से छोड़ा गया था। यह बस अनिश्चित भविष्य में सिमट गया, और प्रोग्रामर की एक नई पीढ़ी सामने आई, जिन्होंने किसी भी फोरट्रान-जैसे या एल्गोल-जैसे नोटेशन के बजाय आंतरिक नोटेशन को प्राथमिकता दी, जिसे तैयार किया जा सकता था।.[5]

कार्यान्वयन

सिंटेक्स शुगर एम-एक्सप्रेशन का रूप 1988 से वोल्फ्राम मैथमैटिका की वोल्फ्राम भाषा में प्रयुक्त किया गया है:

उदाहरण वुल्फ्राम स्निपेट्स
एक्सप्रेशन प्रकार सुगन्धित वाक्यविन्यास (इनपुटफॉर्म) फ़ंक्शन फॉर्म (पूर्ण प्रपत्र)
सूची मान {1, 2, 3} List[1, 2, 3]
फ़ंक्शन अनुप्रयोग f[x, y] f[x, y]
फ़ंक्शन परिभाषा प्योर square = #*# & Set[square, Function[Times[Slot[1],Slot[1]]]]
नामांकित square = x x*x Set[square, Function[x, Times[x, x]]]
क्रम square[x_] := x*x SetDelayed[square[Pattern[x, Blank[]]], Times[x, x]]
सशर्त एक्सप्रेशन

If[x<0,-x,x] Piecewise[{{-x, x < 0}}, x]


एलआईएसपी के लिए

एमएलस्प लिस्प के लिए एम-एक्सप्रेशन-जैसे फ्रंटएंड को प्रयुक्त करने के लिए समकालीन (1968-1973) परियोजना थी। स्वच्छ मैक्रोज़, पैटर्न मिलान और बैक ट्रैकिंग जैसी कुछ अतिरिक्त सुविधाएँ सम्मिलित की गईं थी। यह अंततः परित्यक्त लिस्प70 ड्राफ्ट में विकसित हुआ था। 1989 से एम.एल.आई.एस.पी (मेटाएलआईएसपी) योजना के साथ एम-एक्सप्रेशन को मिश्रित करने का और प्रयास था।[6]

एआई मेमो 8 एम-एक्सप्रेशन के लिए पार्सर सामान्य लिस्प में उपलब्ध है, किन्तु मैक्रोज़ के साथ सामना करने में असमर्थता के कारण लेखक इसे एम-एक्सप्रेशन के विरुद्ध स्थिति के रूप में चाहता है।[7]


के के लिए

एपीएल (प्रोग्रामिंग भाषा)-परंपरा में अधिक संक्षिप्त नोटेशन के अतिरिक्त, के (प्रोग्रामिंग भाषा) में एम-एक्सप्रेशन भी सम्मिलित है।

fibs: {[n]
	if[less[n;3];:iota[n]]
	fibrec:{[list]
		if[equal[n;count[list]];:list]
		a:list[minus[count[list];1]]
		b:list[minus[count[list];2]]
		:_f[join[list;plus[a;b]]]
	}
	:fibrec[(0;1)]
}

आगे का विकास

मैकलिस्प में कोल (1977) प्रयुक्त किया गया था और यह इन्फिक्स ऑपरेटरों के साथ अल्गोल-जैसे सिंटैक्स को प्रस्तुत करने के समान लक्ष्य का पालन करता है।[6] यह सशस्त्र बेयर कॉमन लिस्प पर काम करने के लिए जाना जाता है।[8]

एक और वर्तमान (लगभग 2003) संस्करण आई-एक्सप्रेशन है, जो कोष्ठक को स्पष्ट रूप से इंगित करने के लिए ऑफ-साइड नियम का उपयोग करता है, और इस प्रकार कुछ मायनों में एस-एक्सप्रेशन और एम-एक्सप्रेशन के बीच मध्यवर्ती है। आई-एक्सप्रेशन को कार्यान्वयन के लिए योजना अनुरोध 49 में स्कीम (प्रोग्रामिंग लैंग्वेज) के सहायक सिंटैक्स के रूप में प्रस्तुत किया गया था, किन्तु उन्हें व्यापक रूप से नहीं अपनाया गया है।[9]

एक और विकास स्वीट टी-एक्सप्रेशन है, जिसमें बिना किसी पूर्वता के इन्फ़िक्स ऑपरेटर हैं। आई-एक्सप्रेशन की तरह, टी-एक्सप्रेशन एस-एक्सप्रेशन से दूर केवल सरल परिवर्तन है, जिससे सैद्धांतिक रूप से उनका उपयोग किसी भी लिस्प बोली पर किया जा सके और मैक्रोज़ जैसी सुविधाओं में हस्तक्षेप न किया जा सकता है।[10]

अतिरिक्त सिंटैक्स-संबंधी में ऐप्पल की डायलन (प्रोग्रामिंग भाषा) (अल्गोल-जैसे टोकन) और क्लोजर द्वारा अन्य शाब्दिक सिंटैक्स को सम्मिलित करना सम्मिलित है।[6]


टिप्पणियाँ


संदर्भ

  1. "एलआईएसपी का कार्यान्वयन". www-formal.stanford.edu. Retrieved 2020-03-29.
  2. 2.0 2.1 2.2 "LISP 1.5 Programmer's Manual" (PDF). Community.computerhistory.org. 1965. Archived from the original (PDF) on 2006-02-11. Retrieved 2013-09-02.
  3. McCarthy, John (April 1960) "Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I"
  4. McCarthy, John (March 1959). "Recursive Functions of Symbolic Expressions and Their Computation by Machine (AI Memo 8)".
  5. "The implementation of LISP". Formal.stanford.edu. 1979-02-12. Retrieved 2013-08-24.
  6. 6.0 6.1 6.2 Lee, Xah. "एलआईएसपी इंफिक्स सिंटैक्स सर्वे".
  7. "एम-एक्सप्रेशन के लिए एक पार्सर". Let's newbies play with them, and realize how impractical they are. Note for example, that we cannot use macros anymore because their syntax would need to be known by the M-expression parser.
  8. CGOL on ABCL Development of the Armed Bear Common Lisp implementation blog.
  9. Möller, Egil (2003). "SRFI 49: Indentation-sensitive syntax". srfi.schemers.org.
  10. Wheeler, DA (2013). "SRFI 110: Sweet-expressions (t-expressions)". srfi.schemers.org.