Saturday 15 May 2010

Existential quantifier silently disrupts Template Haskell (makeLenses). Why? -


मेरे पास यह फ़ाइल है:

  {- # LANGUAGE TemplateHaskell # -} {- # LANGUAGE ExistentialQuantification # -} मॉड्यूल खिलौना जहां आयात नियंत्रण। लेंस डेटा बार = बार {_barish :: String} डेटा Foo = forall a। एक = & gt; दिखाएं Foo {_fooish :: a} $ (मेकलेन्स 'बार) $ (मेनलेंस' फू) x = बारिश y = फ़ूश   

और मुझे निम्न त्रुटि संदेश मिलता है:

  toy.hs: 15: 5: क्षेत्र में नहीं: `फूश 'शायद आप का मतलब` _fooish' (लाइन 9)   

यह मेरा पहला प्रयास है अस्तित्व के क्वांटिफ़ायर; मुझे पता नहीं है कि सुविधाओं का यह संयोजन टूटता क्यों है और भी चिंताजनक रूप से, मुझे मेकलेन्स विफल होने के बारे में कोई त्रुटि संदेश क्यों नहीं मिलता? मैं वास्तव में अपने कार्य का उपयोग नहीं कर सकता / _fooish। यदि आप ऐसा करने का प्रयास करते हैं, तो आपको त्रुटि मिलती है:

  बचने के प्रकार के कारण एक समारोह के रूप में रिकॉर्ड चयनकर्ता `_fooish 'का उपयोग नहीं कर सकता संभावित निदान: इसके बजाय पैटर्न-मिलान सिंटैक्स का प्रयोग करें अभिव्यक्ति में: _fooish   

इसलिए लेंस आपके लिए लेंस नहीं बना सकते यह त्रुटि क्यों नहीं देता? ठीक है, कभी-कभी आपके पास अतिरिक्त फ़ील्ड होते हैं जिसके लिए लेंस उत्पन्न करना संभव है। ऐसा लगता है कि यह मामला यहां नहीं है, लेकिन मुझे लगता है कि सामान्य तौर पर केवल उन सभी चीजों को छोड़ दिया जाता है जो करना असंभव है और शेष उत्पन्न करने का प्रयास करते हैं।

No comments:

Post a Comment