4
ฉันจะใช้การแก้ไขได้อย่างไรและทำงานอย่างไร
ฉันสับสนเล็กน้อยกับเอกสารสำหรับfix(แม้ว่าฉันคิดว่าฉันเข้าใจว่ามันควรจะทำอะไรในตอนนี้) ดังนั้นฉันจึงดูซอร์สโค้ด นั่นทำให้ฉันสับสนมากขึ้น: fix :: (a -> a) -> a fix f = let x = f x in x สิ่งนี้ส่งคืนจุดคงที่ได้อย่างไร? ฉันตัดสินใจลองใช้ที่บรรทัดคำสั่ง: Prelude Data.Function> fix id ... และมันค้างอยู่ที่นั่น ตอนนี้เพื่อความเป็นธรรมนี่คือบน macbook เครื่องเก่าของฉันซึ่งค่อนข้างช้า อย่างไรก็ตามฟังก์ชั่นนี้ไม่สามารถคำนวณได้แพงเกินไปเนื่องจากสิ่งที่ส่งผ่านไปยัง id จะให้สิ่งเดียวกันนั้นกลับมา (ไม่ต้องพูดถึงว่ามันกินเวลา CPU ไม่ได้) ผมทำอะไรผิดหรือเปล่า?