2013-02-26 20 views
6

में ऑपरेटर प्राथमिकता मैं हास्केल में ऑपरेटर प्राथमिकता के नियमों के बारे में उलझन में हूं।हास्केल

*Main> 2 * 3 `mod` 2 
0 

इस की तुलना में अलग:
अधिक विशेष रूप से, ऐसा क्यों है?

*Main> 2 * mod 3 2 
2 
+0

यह भी देखें [प्रस्तावना ऑपरेटर precedences] (http://stackoverflow.com/a/30288988/3041008) जवाब देने के लिए – mucaho

उत्तर

13

समारोह कॉल सघनतम बाँध, और इसलिए

2 * mod 3 2 

रूप

2 * (mod 3 2) 

एक ही है कि मन में रखो mod संचालक के रूप में यहां इस्तेमाल किया जा रहा है के बाद से वहाँ कोई बैकटिक हैं।

अब, mod का उपयोग इंफिक्स रूप में किया जाता है, इसकी 7 की प्राथमिकता है, जो (*) भी है। के बाद से वे एक ही precendence है, और बाएं साहचर्य हैं, वे बस बाएं से दाएं पार्स किए जाते हैं:

(2 * 3) `mod` 2 
+0

व्याख्या करने के लिए धन्यवाद :) –

2

2 * 3 = 6 और फिर mod 2 = कोई शेष के साथ 3 ... इसलिए 6 mod 2 = 0 आपकी जवाब है। अपने दूसरे मामले में आप 2 * कर रहे हैं mod 3 2 का परिणाम जो 2 * 1 = 2 है। इसलिए आपका उत्तर 2 है .... आपका ऑपरेटर प्राथमिकता वही बना हुआ है, आपने बस इसे व्यवस्थित किया है ताकि उत्तर तदनुसार व्यक्त किए गए हों।

+0

धन्यवाद! –