someFun <$> (a :: IO()) <$> (b :: IO())
द्वारा परिभाषित आईओ क्रिया को निष्पादित करते समय, a
और b
क्रियाओं का निष्पादन निष्पादित किया गया है? यही है, क्या मैं a
पर b
से पहले निष्पादित कर सकता हूं?हास्केल - आवेदक के मामले में प्रभाव आदेश निर्धारक है?
जीएचसी के लिए, मैं देख सकता हूं कि आईओ राज्य का उपयोग करके लागू किया गया है, और यह भी here देखता है कि यह एक आवेदक उदाहरण है, लेकिन वास्तविक उदाहरण घोषणा का स्रोत नहीं मिल सकता है। राज्य के माध्यम से लागू किए जाने से पता चलता है कि विभिन्न आईओ प्रभावों को अनुक्रमिक होने की आवश्यकता है, लेकिन आवश्यक नहीं है कि वे अपने आदेश को परिभाषित करें।
जीएचसीआई में चारों ओर बजाना लगता है कि एप्लायेटिव प्रभाव आदेश को बरकरार रखता है, लेकिन क्या यह कुछ सार्वभौमिक गारंटी है, या जीएचसी विशिष्ट है? मुझे विवरण में दिलचस्पी होगी।
import System.Time
import Control.Concurrent
import Data.Traversable
let prec (TOD a b) = b
fmap (map prec) (sequenceA $ replicate 5 (threadDelay 1000 >> getClockTime))
[641934000000,642934000000,643934000000,644934000000,645934000000]
धन्यवाद!
मुझे लगता है कि इस पोस्ट में उपयोगी जानकारी है लेकिन मुझे अभी भी इसे पचाना है: http://pchiusano.blogspot.hu/2011/07/do-side-effects-really-need-total-order.html – ron
http देखें : //hackage.haskell.org/packages/archive/transformers/0.3.0.0/doc/html/Control-Aplicative-Backwards.html, जो एक आवेदक ट्रांसफार्मर है जो प्रभाव के क्रम को उलट देता है। –