{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
data Quun = Foo | Bar | Oink Quun
fooey :: Quun -> Bool
fooey Foo = True
fooey (Oink Yum) = True
fooey _ = False
pattern Yum <- (fooey -> True)
यह सरल सीधे स्वयं चर्चा करते हुए पैटर्न इस अर्थ होगा के लिए, (कम से कम GHC-7.10.2 में)सभी पुनरावर्ती पैटर्न समानार्थी क्यों खारिज कर रहे हैं?
/tmp/wtmpf-file10227.hs:1:1:
Recursive pattern synonym definition with following bindings:
foo (defined at /tmp/wtmpf-file10227.hs:(6,1)-(8,13))
Yum (defined at /tmp/wtmpf-file10227.hs:10:1-28)
ज़रूर संकलन नहीं है। लेकिन क्या कुछ मौलिक कारण है कि ऊपर के रूप में एक व्यू-पैटर्न मध्यस्थ लेआउट भी संभव नहीं है? मुझे यह विश्वास नहीं मिल रहा है; सब के बाद यह दृश्य पैटर्न इनलाइन और एक पूरी तरह से हानिरहित (अच्छी तरह से ... कम से कम, अनुमति) परिभाषा प्राप्त करना संभव है:
fooey :: Quun -> Bool
fooey Foo = True
fooey (Oink (fooey -> True)) = True
fooey _ = False
pattern Yum <- (fooey -> True)
तो, इस तरह के सिर्फ उपलब्ध नहीं समानार्थी शब्द तकनीकी कारणों से अभी तक कर रहे हैं, और होगा हम उन्हें भविष्य में प्राप्त करते हैं?
'पैटर्न समानार्थी' के लेखक यहां: यह एक अच्छा बिंदु है और इसके लिए टिकट खोलने लायक है। यह लागू करना आसान नहीं हो सकता है, हालांकि, अगर मुझे सही याद है, तो जीएचसी मुक्त चर के सेट में "क्यों" कुछ खत्म होने के बारे में अधिक जानकारी का खुलासा नहीं करता है। – Cactus