रैकेट 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 इस बिंदु पर विवरण में नहीं जाता है, या तो यह बयान को मजबूत करता है कि यह कार्यान्वयन-निर्भर है।
स्रोत
2013-03-19 15:56:20
आपके प्रकार से आपका क्या मतलब है? 'परिभाषित' में वापसी मूल्य नहीं है (और इस प्रकार कोई वापसी प्रकार नहीं है) क्योंकि यह अभिव्यक्ति नहीं है। – sepp2k
परिभाषित वास्तव में एक अभिव्यक्ति है। अब, आपके दूसरे प्रश्न के लिए: मेरा मतलब क्या है? खैर, आप कह सकते हैं कि '5 में संख्या का प्रकार है', '# एफ में बूलियन का प्रकार है', '(लैम्ब्डा (एन) (* एन एन))' का प्रकार [संख्या -> संख्या] है। मेरा सवाल है: एक परिभाषित अभिव्यक्ति का प्रकार क्या है? मुझे उम्मीद है कि मैंने खुद को स्पष्ट कर दिया है। – TheEmeritus
रैकेट में नहीं है यह नहीं है। यदि आप इसे अभिव्यक्ति संदर्भ में उपयोग करने का प्रयास करते हैं, तो रैकेट त्रुटि संदेश उत्पन्न करेगा "परिभाषित करें: अभिव्यक्ति संदर्भ में अनुमति नहीं है"। – sepp2k