जब की गणना IO (IO ()), दोनों (IO ())और ()गणना की जाती है, तो क्यों
main :: IO (IO ())
main = print <$> (print "Hello, World!")
प्रिंट
"Hello, World!"
नहीं
IO "Hello, World!" -- ??
"Hello, World!"
@Redu यह सही है, लेकिन ध्यान दें कि
—
ची
print ()कभी भी मंगलाचरण का मूल्यांकन नहीं किया जाता है, और न ही इसकी कार्रवाई की जाती है (जो स्टेकआउट ()पर प्रिंट होती है)। तो, "के print ()बाद आह्वान ..." थोड़ा भ्रामक (IMO) है।
fmap print (print "Hello World")यह पहले पैरामीटर,printफ़ंक्शन, के परिणाम पर लागू होता हैprint "Hello World"। यह केवल कार्रवाई करने केprint ()बाद आह्वान करने के बराबरprint "Hello World"है।