6
क्या आम लिस्प deftype के साथ बनाए गए प्रकारों को परिभाषित करने के लिए सुविधा प्रदान करता है?सामान्य लिस्प में एक प्रकार का वितरण
मुझे इसके बारे में हाइपरपेक में कुछ भी नहीं मिला है।
क्या आम लिस्प deftype के साथ बनाए गए प्रकारों को परिभाषित करने के लिए सुविधा प्रदान करता है?सामान्य लिस्प में एक प्रकार का वितरण
मुझे इसके बारे में हाइपरपेक में कुछ भी नहीं मिला है।
मैं सिर्फ unintern
व्युत्पन्न प्रकार निर्दिष्टकर्ता होगा:
T1> (deftype foo() 'fixnum)
FOO
T1> (let ((bar 1))
(check-type bar foo))
NIL
T1> (unintern 'foo)
T
T1> (let ((bar 1))
(check-type bar foo))
Unknown type specifier: FOO
[Condition of type SIMPLE-ERROR]
इसके अलावा, अगर आप किसी कारण से प्रकार के हर ट्रेस हटाने के बारे में वास्तव में चिंतित हैं, तो आप हमेशा के लिए कार्यान्वयन पर निर्भर कोड लिख सकते हैं इसे प्राप्त करें, भले ही ऐसी कार्यक्षमता मानक में उल्लिखित न हो।
(defun delete-type (derived-type-specifier)
(ccl::clear-type-cache)
(remhash derived-type-specifier ccl::%deftype-expanders%)
(setf (documentation derived-type-specifier 'type) nil))
और यहाँ हम चले:
T1> (deftype foo() "frob" 'fixnum)
FOO
T1> (documentation 'foo 'type)
"frob"
T1> (let ((bar 1))
(check-type bar foo))
NIL
T1> (delete-type 'foo)
NIL
T1> (documentation 'foo 'type)
NIL
T1> (let ((bar 1))
(check-type bar foo))
Unknown type specifier: FOO
[Condition of type SIMPLE-ERROR]
उदाहरण के लिए, सीसीएल में (अपरीक्षित, मैं सिर्फ प्रासंगिक कोड स्किम्ड)