2013-03-19 5 views
6

इसे आसान बनाने के लिए: मेरा प्रश्न योजना में परिभाषित अभिव्यक्ति का प्रकार क्या है? उदाहरण के लिएयोजना में परिभाषित अभिव्यक्ति का प्रकार

लें:

(define x 5) 

या

(define x (lambda (n) (* n n))) 

यह थोड़ा मेरे लिए भ्रामक है। क्या कोई मदद कर सकता है?

+0

आपके प्रकार से आपका क्या मतलब है? 'परिभाषित' में वापसी मूल्य नहीं है (और इस प्रकार कोई वापसी प्रकार नहीं है) क्योंकि यह अभिव्यक्ति नहीं है। – sepp2k

+0

परिभाषित वास्तव में एक अभिव्यक्ति है। अब, आपके दूसरे प्रश्न के लिए: मेरा मतलब क्या है? खैर, आप कह सकते हैं कि '5 में संख्या का प्रकार है', '# एफ में बूलियन का प्रकार है', '(लैम्ब्डा (एन) (* एन एन))' का प्रकार [संख्या -> संख्या] है। मेरा सवाल है: एक परिभाषित अभिव्यक्ति का प्रकार क्या है? मुझे उम्मीद है कि मैंने खुद को स्पष्ट कर दिया है। – TheEmeritus

+0

रैकेट में नहीं है यह नहीं है। यदि आप इसे अभिव्यक्ति संदर्भ में उपयोग करने का प्रयास करते हैं, तो रैकेट त्रुटि संदेश उत्पन्न करेगा "परिभाषित करें: अभिव्यक्ति संदर्भ में अनुमति नहीं है"। – sepp2k

उत्तर

11

रैकेट define में एक विशेष फार्म और नहीं एक अभिव्यक्ति है, तो यह प्रति-se एक मूल्य नहीं है, यदि आप कुछ इस तरह अमल करने के लिए आपको एक त्रुटि मिल जाएगा कोशिश:

(display (define x 42)) 
=> define: not allowed in an expression context in: (define x 42) 

यदि यह एक मूल्य यह void जैसा कुछ हो जाएगा के लिए गए थे, लेकिन वह दुभाषिया की विशेष कार्यान्वयन विवरण पर आधारित होगी (मेरा मानना ​​है कि मैं एक दुभाषिया वापसी #t के बाद एक define पूरा कर लिया गया देखा)

The constant #<void> is returned by most forms and procedures that have a side-effect and no useful result

specification इस बिंदु पर विवरण में नहीं जाता है, या तो यह बयान को मजबूत करता है कि यह कार्यान्वयन-निर्भर है।

+1

'परिभाषित' रैकेट में अभिव्यक्ति नहीं है। यदि आप इसे अभिव्यक्ति संदर्भ में उपयोग करते हैं, तो आपको एक त्रुटि मिलती है - 'void' नहीं। – sepp2k

+0

ठीक है, मैं स्पष्ट करता हूं कि –

+0

यदि आप केवल 'परिभाषित' लिखते हैं, तो यह आपके द्वारा बताए गए अभिव्यक्ति नहीं हो सकता है। लेकिन '(x 5 परिभाषित करें)' लिखना या उस तरह का कोई और चीज़ 100% में अभिव्यक्ति है। – TheEmeritus

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