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 olanprintişlevi sonucuna uygularprint "Hello World". Bu, eylem gerçekleştirildiktenprint ()sonra çağırmanın eşdeğeridirprint "Hello World".