2011-10-18 8 views
21

बैकटिक ऑपरेटरों की स्थिरता क्या है?बैकटिक ऑपरेटरों की फिक्स्डिटी?

इस कोड में उदाहरण के लिए Real World Haskell से:

ghci> (1+) `fmap` [1,2,3] ++ [4,5,6] 
[2,3,4,4,5,6] 

यह स्पष्ट है बैकटिक ऑपरेटर `fmap`++, लेकिन none is given by GHCi तुलना में एक उच्च स्थिरता है।

+1

@ dabe4420 बीटीडब्ल्यू, बग केवल आरपीएल पर परिभाषित कार्यों पर स्थिरता घोषणाओं को प्रभावित करता है। '' F '\ 'elem \' "abc" ++ "ijk" जैसे कुछ की तुलना करें जो ठीक काम कर रहा है। – fuz

उत्तर

21

the Haskell Report की §4.4.2 राज्यों

किसी भी ऑपरेटर की कमी है कि एक स्थिरता घोषणा infixl 9

"कोई भी ऑपरेटर" माना जाता है बैकटिक में सामान्य कार्य के नाम भी शामिल है।

आपका उदाहरण से पता चलता `fmap` करता है कि ++ की तुलना में अधिक स्थिरता है, क्योंकि fmap के परिणाम पर ++ कार्य करता है।

+4

यह उल्लेखनीय है कि आप ऐसे ऑपरेटरों के लिए स्थिरता निर्दिष्ट कर सकते हैं। उदाहरण के लिए, '1 + 2 \' const \ '5 = 3', लेकिन' 1 + 2 \ 'div \' 5 = 1'। – Rotsor

+4

@Rotsor: आपका उदाहरण एक उदाहरण नहीं है क्योंकि '1 + 2 \ 'const \' 5' अभिव्यक्ति का मान 3 होगा, भले ही '\' const \ '' की '' 'div की समानता \ ''। –

+4

ओह, मैं कैसे कर सकता हूं? '2 \' div \ '1^2 = 2' और' 2 \ 'const \' 1^2 = 4' तब उदाहरण हैं। – Rotsor

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