हास्केल में, हमारे पास साइड इफेक्ट्स से निपटने के लिए IO
मोनैड है, हालांकि, यह साइड इफेक्ट्स को स्पष्ट रूप से ट्रैक करने में सक्षम नहीं है, आप वास्तव में नहीं जानते कि किस प्रकार का दुष्प्रभाव वास्तव में है हो रहा है: यह स्पष्ट रूप से है कि हैसाइड इफेक्ट्स को ट्रैक करने के लिए मोनाड
main :: forall e. Eff (fs :: FS, trace :: Trace, process :: Process | e) Unit
यहाँ:
main :: IO()
PureScript में, हम प्रकार हस्ताक्षर के अनुसार पर हो Eff
इकाई है, जहां आप दुष्प्रभाव किस प्रकार पता करने में सक्षम हैं main
फ़ंक्शन में फ़ाइलों का उपयोग किया गया है tem, कंसोल पर संदेशों का पता लगाने और वर्तमान प्रक्रिया को संभालने में सक्षम है, जहां हमारे पास साइड इफेक्ट्स से निपटने के लिए Control.Monad.Eff
और Control.Monad.Eff.Random
और Control.Monad.Eff.Console
जैसे सबोड्यूल्यूल हैं।
उदाहरण से ले रहा है निम्नलिखित:
module RandomExample where
import Prelude
import Control.Monad.Eff
import Control.Monad.Eff.Random (random)
import Control.Monad.Eff.Console (print)
printRandom :: forall e. Eff (console :: CONSOLE, random :: RANDOM | e) Unit
printRandom = do
n <- random
print n
यह इतना का उपयोग कर बस की तुलना में अधिक विशिष्ट है "अरे, यहाँ एक पक्ष प्रभाव, कि, यह कोई और अधिक है कि आप जानना चाहते हैं क्या होता है!"। मैं वेब के माध्यम से देख रहा हूं और मुझे साइड इफेक्ट्स को ट्रैक करने के लिए पर्याप्त मोनाड नहीं मिला।
साइड इफेक्ट्स को ट्रैक करने के लिए Eff
जैसे हास्केल में एक विशिष्ट मोनड है?
अग्रिम धन्यवाद।
अच्छी तरह से सभी प्रकार के दुष्प्रभाव हैं ताकि आप कौन सी चाहें? - उनमें से कुछ के अपने स्वयं के मोनैड (राज्य, ...) हैं और कई libs कुछ और (यसोड, ...) पेश करते हैं - लेकिन मुझे नहीं लगता कि आप उन्हें PureScript की तरह इकट्ठा नहीं कर सकते हैं - आमतौर पर ट्रांसफार्मर और मोनड- यह – Carsten
करने के लिए स्टैक अवधारणा एक छोटा नाइटपिक: 'आईओ' * प्रभाव * है, साइड इफेक्ट्स नहीं। एक दुष्प्रभाव शुद्ध होने का नाटक करने वाले गणना की तरह कुछ बुरा होगा, लेकिन 'unsafePerformIO' के माध्यम से IO कर रहा है। – Cactus