मेरे दिमाग को उपसर्ग संकेतन के आसपास लपेटना?


10

मैं LISP के बारे में पढ़ रहा हूं।

मैं समझता हूं कि एक निश्चित स्तर पर उपसर्ग संकेतन कैसे काम करता है, लेकिन मैं सोच रहा था कि क्या इसे सहज बनाने के लिए कोई चाल है।


6
अभ्यास के अलावा, आपका मतलब है?

उपयोगकर्ता RPL, LISP का मेरा पसंदीदा स्वाद है। यह भी कोई कोष्ठक नहीं है! en.wikipedia.org/wiki/RPL_(programming_language) मुझे अपने HP 50g का उपयोग करने की याद आती है :-(
Robbie

पहले तो यह समझ में नहीं आता था, लेकिन अब मुझे लगता है कि यह अद्भुत है, और मैंने ज्यादातर पढ़ना शुरू कर दिया है। यह वास्तव में है कि हम कैसे बोलते हैं: "... का योग ... का उत्पाद ..." हालांकि, इसे एक अलग तरह के पढ़ने की आवश्यकता होती है। अब आप ऑपरेटर को एक पंक्ति में पढ़ने के बजाय, सभी तर्कों पर लागू करते हैं।
मार्क सी

उपसर्ग संकेतन में क्या गलत है? लगभग सभी भाषाएं इसका उपयोग कर रही हैं। फ़ंक्शन कॉल लगभग हमेशा उपसर्ग हैं।
एसके-तर्क

ज़रुरी नहीं; "सहज" सहज है, क्योंकि आपने इसे गणितीय सम्मेलनों के रूप में> 20+ वर्षों के लिए सीखा है। चूंकि केवल LISP और शायद कुछ अन्य भाषाएं इस सम्मेलन का उपयोग करती हैं, और आप अभी भी दूसरे को बहुत अधिक सीखेंगे, यह शायद ही कभी समान रूप से "सहज" बन जाएगा। और हम यहां केवल सरल भावों के बारे में बात कर रहे हैं (2 + 3 ... आप "आधा पृष्ठ" लाइनर कैसे आज़माना चाहेंगे? :)
Rook

जवाबों:


6

मानसिक रूप से इसे पढ़ने के लिए बाएं से दाईं ओर बोली जाने वाली भाषा के रूप में उचित क्रियाओं से मदद मिल सकती है। उदाहरण के लिए (+ 3 2) "तीन और दो को जोड़ें" हो सकता है। अधिक सामान्य मामले में, आप कह सकते हैं "$ ऑपरेंड पर $ ऑपरेशन करें"। एक ही मामले पर लागू होता है: "तीन और दो पर ऐड ऑपरेशन करें"।


क्या आप के साथ क्या करना होगा ( = 1 2 )और( > 4 2 )
विवियन नदी

3
आप अलंकारिक प्रश्नों का उपयोग करेंगे। :) बराबरी का? (क्या?), "1 और 2! (Erm ... नहीं ...)
अराफंगियन

@ राइसफ्लोर (अरे, मैं चावल के आटे से बनी चीजें खाकर बड़ा हुआ हूं - मुझे ग्लूटेन की समस्या है।) मैं पढ़ता हूं "क्या एक दो के बराबर है?", या "निम्नलिखित समान हैं?" अधिक से अधिक और कम से कम ऑपरेटरों उपसर्ग के रूप में स्वाभाविक नहीं हैं, लेकिन मुझे आश्चर्य है कि लिस्प कोड में उनका कितनी बार उपयोग किया जाता है।
मार्क सी

7

ट्रिक्स? किस लिए?

यह आपके लिए अभी तक सहज नहीं है क्योंकि आपके मानसिक पार्सर का उपयोग नहीं किया गया है। यह बेहतर होगा यदि आप इसका उपयोग करें और इसे बार-बार पढ़ें।


मैंने इसे इतना भी नहीं पढ़ा है , लेकिन अब मुझे लगता है कि यह अद्भुत है। ऐसा लगता है कि मेरे मस्तिष्क को कोष्ठक के बारे में लगभग "स्पर्श" की भावना है। मुझे लगता है कि भावना केवल अधिक उत्सुक हो जाएगी।
मार्क सी

5

आप एक तरह के फंक्शन कॉल के बारे में सोच सकते हैं:

(operator operand1 operand2 ...)

इसके बारे में कुछ खास नहीं है। यदि आप C ++ में ऑपरेटरों को ओवरलोड करते हैं (और कई अन्य भाषाएँ जो इसे अनुमति देती हैं) तो आपको अक्सर इस तरह के फ़ंक्शन को ठीक उसी तरह परिभाषित करना होगा:

MyClass operator+(MyClass const& x, MyClass const& y);

हाँ, यह है कि मैं यह कैसे करते हैं। यदि आप वापस कदम रखते हैं और जावा, सी #, आदि में विधि कॉल को देखते हैं, तो वे वास्तव में केवल अलग-अलग जगह में कोष्ठक के साथ उपसर्ग संकेतन हैं: MyMethod (arg1, arg2)।
nlawalker

4

कई भाषाएं उपसर्ग, इन्फिक्स और यहां तक ​​कि पोस्टफिक्स के मिश्रण का उपयोग करती हैं।

लिस्प केवल डिफ़ॉल्ट रूप से केवल उपसर्ग का उपयोग करता है। यदि पाप (x) गणित से सहज है, तो (sin x) दूर नहीं है। यदि चाल (कुत्ता, घर) एक पारंपरिक प्रक्रिया कॉल है, तो लिस्प में यह सिर्फ (कुत्ते घर ले जाएँ) है।

लिस्प गणित के लिए कोई अपवाद नहीं बनाता है और +, -, * और दूसरों को सामान्य फ़ंक्शन कॉल की तरह मानता है।


2

जब (अंततः) "सब कुछ एक फ़ंक्शन कॉल है" (या एक विशेष रूप, या एक मैक्रो-विस्तार, दोनों "फ़ंक्शन कॉल" की सतह सिंटैक्स वाले) पर क्लिक किया गया, तो यह बहुत स्वाभाविक लगा।

इसलिए, (= 1 2)मैंने पढ़ा है कि '1 और 2 पर तुलना के बराबर संख्यात्मक कॉल' के रूप में।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.