यह संभव एक समारोह isFunc :: a -> Bool
लिखने के लिए निर्धारित करने के लिए किनिर्धारित करें कि क्या एक मूल्य के हास्केल में एक समारोह है
foo :: Int -> Int
bar :: Char -> Char -> Char
> isFunc foo
True
> isFunc bar
True
> isFunc 3
False
> isFunc 'a'
False
मैं Data.Dynamic तो मैं उपयोग कर रहा हूँ एक मनमाना मूल्य एक समारोह (किसी भी प्रकार की) है कि क्या इस तरह है अग्रिम में प्रकार निर्धारित नहीं कर सकते हैं।
'isFunc' पूछने के लिए एक अच्छी तरह से गठित सवाल नहीं है बहुरूपता की उपस्थिति में। मेरे पास 'ए' प्रकार की बात है; क्या यह एक समारोह है या नहीं? जवाब तब तक अनिश्चित है जब तक कि मैंने 'ए' को एक मोनोमोर्फिक प्रकार में बदल दिया है, तब तक मैं चुन सकता हूं, उदाहरण के लिए, 'ए ~ इंट' या 'ए ~ इंट -> Int'। आपके 'isFunc 3' उदाहरण में वास्तव में यह समस्या है, और आपने शायद यह भी ध्यान नहीं दिया; आप कैसे जानते हैं कि '3' कोई फ़ंक्शन नहीं है? –