2015-02-23 11 views
11

हास्केल में, मैं अक्सर कुछ इस तरह करते हैं:लैम्बडा के बाध्यकारी में पैटर्न मैच?

f $ \x -> case x of 
      A a1 a2 -> ... 
      B b1 b2 -> ... 
      C c1 c2 -> ... 

लेकिन मैं x नहीं करना चाहती, मैं सिर्फ यह deconstruct करना चाहते हैं।

मानक ML में मैं कुछ इस तरह कर सकते हैं:

f (fn A(a1,a2) => ... 
    | B(b1,b2) => ... 
    | C(c1,c2) => ...) 

वहाँ हास्केल में या किसी GHC एक्सटेंशन के साथ यह करने के लिए कोई तरीका है?

उत्तर

19

आप LambdaCase भाषा एक्सटेंशन का उपयोग करें और अपने उदाहरण के अनुसार

{-# LANGUAGE LambdaCase #-} 
... 
f $ \case 
    A a1 a2 -> 
... 

प्रदर्शन कर सकते हैं।

आप सवाल करने से पहले अधिक पढ़ सकते हैं इसके बारे में in GHC's documentation

+0

शब्द मैं बस मैनुअल के 7 अध्याय के माध्यम से स्क्रॉल और मैं इस ग्राहकों मैं भी गैंगस्टा हूँ याद की जाना चाहिए! –

संबंधित मुद्दे