เมื่อทำการคำนวณ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")ใช้พารามิเตอร์แรกของมันที่ฟังก์ชั่นเพื่อผลมาจากการprintprint "Hello World"นั่นเป็นเพียงการเรียกใช้print ()หลังจากprint "Hello World"ดำเนินการ