मैं एक प्रकार के विनिर्देश को परिभाषित करना चाहता हूं जो एक ही प्रकार की चीजों की सूची का वर्णन करता है। इसलिए मैं (list-of integer)
(array integer)
(जो अंतर्निहित है) के समान होना चाहता हूं। मैं, एक विशिष्ट प्रकार के लिए उसे बनाने के लिए इस तरह कर रहा हूँ:सामान्य लिस्प में, एक सामान्य डेटा प्रकार विनिर्देशक (जैसे पूर्णांक की सूची) को परिभाषित करने के लिए कैसे?
(defun elements-are-integer (seq)
(every #'(lambda (x) (typep x 'integer)) seq))
(deftype list-of-integer()
'(and list (satisfies elements-are-integer)))
हालांकि, इसका मतलब यह है कि मैं हर संभव प्रकार के लिए यह करने के लिए किया है। मैं इस कोड को कैसे बदल सकता हूं ताकि प्रकार एक तर्क के रूप में एक और प्रकार ले ले, और satisfies
फ्लाई पर भविष्यवाणी कर सके? समस्या यह है कि satisfies
को वैश्विक प्रतीक की आवश्यकता है, और मुझे नहीं पता कि उचित संदर्भ में पूर्वानुमान कार्य को कैसे परिभाषित किया जाए (मुझे लगता है कि मुझे किसी भी तरह gensym
की आवश्यकता है, लेकिन कैसे?)। इसके अलावा, समाधान को काम करना चाहिए ताकि प्रकार किसी अन्य पैकेज के अंदर बनाया जा सके।
धन्यवाद। यह निश्चित रूप से उपयोगी है, भले ही यह वही नहीं है जो मैं चाहता था। –