मैं कुछ टेम्पलेट हास्केल सीखने की कोशिश कर रहा हूं। एक अभ्यास के रूप में, मैंने एक ऐसा फ़ंक्शन लिखा जो isLeft
और isRight
(this question से प्रेरित) जैसी चीजें उत्पन्न कर सकता है। यहाँ मेरी विनम्र प्रयास है:
isA connam = do
ConE nam <- connam
nn <- newName "p"
lamE [varP nn] $ caseE (varE nn) [
match (conP nam [wildP]) (normalB [| True |]) [],
match wildP (normalB [| False |]) []
]
समस्या मैं अधिक सहज ज्ञान युक्त isA Left
के बजाय $(isA [| Left |])
लिखने के लिए होता है। क्या बदसूरत वाक्यविन्यास से छुटकारा पाना संभव है? मुझे प्रलेखन में जवाब नहीं मिल रहा है।
फ़ंक्शन केवल एक-तर्क निर्माता के साथ काम करता है, लेकिन यह another question के लिए है।
धन्यवाद। मैं निश्चित रूप से उस के साथ रह सकता हूँ। मुझे कहीं याद है कि स्प्लिसेस के लिए '$' अब आवश्यक नहीं है, लेकिन मुझे यकीन नहीं है कि यह किस संदर्भ में था, या यह यहां लागू हो सकता है या नहीं। –
@ एनएम। मैंने अभी कहा कि एक पल पहले मेरे जवाब में :) मुझे लगता है कि आप अभी भी अपनी टिप्पणी लिखते समय अपना मूल जवाब देख रहे थे। – hammar
आह, इसलिए यदि मैं वास्तविक कार्य के बजाय 'isaleft' नामक फ़ंक्शन की घोषणा उत्पन्न करने के लिए 'isA' Left 'चाहता हूं, तो मैं $ को छोड़ सकता हूं, है ना? –