เมื่อทำการคำนวณIO (IO ())
ทั้ง(IO ())
และ()
ถูกคำนวณแล้วทำไม
main :: IO (IO ())
main = print <$> (print "Hello, World!")
พิมพ์
"Hello, World!"
ไม่
IO "Hello, World!" -- ??
"Hello, World!"
@Redu ถูกต้อง แต่โปรดทราบว่าการร้องขอ
—
ไค
print ()
ไม่เคยได้รับการประเมินหรือการดำเนินการของมัน (ซึ่งจะพิมพ์()
บน stdout) ดังนั้น "การเรียกใช้print ()
หลังจาก ... " จึงทำให้เข้าใจผิดเล็กน้อย (IMO)
fmap print (print "Hello World")
ใช้พารามิเตอร์แรกของมันที่ฟังก์ชั่นเพื่อผลมาจากการprint
print "Hello World"
นั่นเป็นเพียงการเรียกใช้print ()
หลังจากprint "Hello World"
ดำเนินการ