है, तो मैं हास्केल में एक साधारण योजना दुभाषिया बनाने की कोशिश कर रहा हूं। इस के हिस्से के रूप में, मैं कुछ आदिम ऑपरेटरों को लागू कर रहा हूं जैसे संख्या ?, स्ट्रिंग? आदिहास्केल फ़ंक्शन जो एक प्रकार और मान लेता है और जांच करता है कि मान
मैं इस तरह कोड है:
isNumber :: [LispVal] -> LispVal
isNumber ([Number n]) = Bool True
isNumber _ = Bool False
isString :: [LispVal] -> LispVal
isString ([String n]) = Bool True
isString _ = Bool False
और क्या मैं करना चाहते हैं, जैसे
isType :: ?? -> [LispVal] -> LispVal
isType (typeName [typeName n]) = Bool True
isType _ = Bool False
दूसरे शब्दों में कुछ है मैं द्वारा ISNUMBER के बराबर बनाना चाहते हैं "आईट टाइप नंबर" कह रहा है। क्या यह किसी भी तरह से संभव है? मैं Google में कुछ भी ढूंढने के लिए संघर्ष कर रहा हूं, शायद क्योंकि मुझे नहीं पता कि स्थिति को क्या कहना है।
आपको शायद "टाइप" के बजाय "कन्स्ट्रक्टर" कहना चाहिए, जैसा कि लिखा है, यह प्रश्न वास्तव में हास्केल के संदर्भ में भी समझ में नहीं आता है। आप हास्केल कन्स्ट्रक्टर के साथ लिस्प प्रकार का प्रतिनिधित्व कर रहे हैं, लेकिन यह सीधे हास्केल प्रश्न के लिए प्रासंगिक नहीं है। – ehird
डेटा। टाइप करने योग्य एक लायक हो सकता है, लेकिन ऐसा नहीं लगता है कि आपको यहां गतिशील जांच की आवश्यकता है। – ExternalReality
[टेम्पलेट हास्केल समाधान] के लिए यहां देखें (http://stackoverflow.com/questions/7213974/how-to-examine-a-quoted-data-constructor-name-in-template-haskell/7214422#7214422)। इसके साथ आप 'isNumber = $ (isA 'संख्या)' – hammar