Hesaplarken IO (IO ())
, hem (IO ())
ve hem de ()
hesaplanır, bu yüzden neden
main :: IO (IO ())
main = print <$> (print "Hello, World!")
Yazdır
"Hello, World!"
değil
IO "Hello, World!" -- ??
"Hello, World!"
@Redu Bu doğrudur, ancak
—
chi
print ()
hiçbir zaman çağrılmayacağını veya eyleminin gerçekleştirilmediğine dikkat edin ( ()
stdout'a yazdıracaktır ). Yani, " print ()
sonra çağırmak ..." biraz yanıltıcıdır (IMO).
fmap print (print "Hello World")
, ilk parametre olanprint
işlevi sonucuna uygularprint "Hello World"
. Bu, eylem gerçekleştirildiktenprint ()
sonra çağırmanın eşdeğeridirprint "Hello World"
.