2012-10-12 14 views
11

निम्नलिखित दो बयान पर विचार करें:बारे हास्केल में 'pseq'

(a `par` b) `pseq` (a + b) 

और

a `par` (b `pseq` (a + b)) 

कोई व्याख्या कर सकते हैं कि कैसे उनके व्यवहार एक दूसरे से अलग?

पहले एक के लिए, यदि मुख्य थ्रेड कंप्यूटिंग b लेकिन चिंगारी कंप्यूटिंग a समाप्त नहीं हुआ है के साथ किया गया है, मुख्य थ्रेड गणना करने के लिए a + b आगे बढ़ना होगा?

उत्तर

12

par a b अर्थात् b के बराबर है, लेकिन यह संकेत देता है कि a का मूल्यांकन शुरू करने के लिए यह उपयोगी हो सकता है। दूसरी तरफ pseq अपने पहले तर्क के मूल्यांकन को मजबूर करता है, लेकिन इसके दूसरे तर्क में बस (आलसी) पहचान कार्य है।

तो,

(a `par` b) `pseq` (a + b) 

जो

a `par` (b `pseq` (a + b)) 
कि दोनों कहते हैं कि "का मूल्यांकन b तो thunk a + b बन"

के बराबर है शब्दार्थ

b `pseq` (a + b) 

के बराबर है। par के परिणामों में गैर परिशुद्धता को देखते हुए भाषा परिभाषा से कोई अन्य अंतर नहीं लिया जा सकता है। इसके बजाय, आपके विशेष कंपाइलर/रनटाइम पर वे थोड़ा अलग चीजें कर सकते हैं।