หลักคือภาษากลางของ GHC Reading Core สามารถช่วยให้คุณเข้าใจประสิทธิภาพของโปรแกรมได้ดีขึ้น มีคนถามหาเอกสารหรือแบบฝึกหัดเกี่ยวกับการอ่าน Core แต่ฉันไม่สามารถหาได้มากนัก
มีเอกสารอะไรบ้างสำหรับการอ่าน GHC Core
นี่คือสิ่งที่ฉันพบ:
หลักคือภาษากลางของ GHC Reading Core สามารถช่วยให้คุณเข้าใจประสิทธิภาพของโปรแกรมได้ดีขึ้น มีคนถามหาเอกสารหรือแบบฝึกหัดเกี่ยวกับการอ่าน Core แต่ฉันไม่สามารถหาได้มากนัก
มีเอกสารอะไรบ้างสำหรับการอ่าน GHC Core
นี่คือสิ่งที่ฉันพบ:
คำตอบ:
GHC Core คือภาษาระบบ FCซึ่งแปล Haskell ทั้งหมด ไวยากรณ์ (โดยประมาณ) สำหรับ Core นั้นมอบให้โดย:
แกนกลางมีความสัมพันธ์อย่างใกล้ชิดกับSystem F ที่ง่ายและเป็นที่รู้จักมากขึ้น การแปลงทั้งหมดที่GHC ทำในระดับแกนกลางนั้นเป็นการปรับโครงสร้างประเภทการอนุรักษ์ของการเป็นตัวแทนแกนนี้เพื่อปรับปรุงประสิทธิภาพ และไม่เป็นที่รู้จักกันดีคุณสามารถเขียนโดยตรงใน Core เพื่อเขียนโปรแกรม GHC
GHC Core เหมาะกับท่อส่งคอมไพเลอร์ (เหมือนเดิมในปี 2002, sans-LLVM และ CMM):
เอกสารหลักเพื่อเรียนรู้เกี่ยวกับ GHC Core คือ:
วัสดุที่เกี่ยวข้องที่สามารถช่วยให้เข้าใจได้:
หลักในทางกลับกันจะถูกแปลเป็นรหัส STG ซึ่งดูเหมือนว่า:
ชื่อตลกใน Core ถูกเข้ารหัสใน "Z-encoding":
ประเภทและชนิดของ GHC Core (จากกระดาษของ Tolmach):
ในที่สุดพรีเซ็นต์ของ GHC จะปรากฏเป็นประจำในเอาต์พุต GHC Core เมื่อคุณปรับปรุง Haskell ของคุณให้เป็นคำสั่งพื้นฐานที่ GHC รู้ ชุด primop ถูกกำหนดให้เป็นชุดของฟังก์ชั่นคอร์ในไฟล์ที่ประมวลผลล่วงหน้า
เคล็ดลับ: หากคุณไม่สนใจคำอธิบายประกอบประเภทและการข่มขู่ใช้-ddump-simpl
ร่วมกับ-dsuppress-all
ตัวเลือก ผลลัพธ์หลักควรอ่านได้มากขึ้น
-dsuppress-all
มีประโยชน์จริงๆ คุณสามารถใช้-dsuppress-coercions
ถ้าคุณต้องการกำจัด casts เท่านั้น (มีประโยชน์เมื่อมีชนิดใหม่ ๆ อยู่มากมาย)
แม้ว่าจะไม่ตรงกับภาษา GHC Core อย่างที่ดอนพูดถึงภาษา STG นั้นค่อนข้างคล้ายกัน ฉันเพิ่งผ่านการฝึกเพื่อพิสูจน์ความปลอดภัยของเครื่อง + ภาษา STG และหลังจากนั้นฉันก็พบว่าฉันสามารถเข้าใจ Core ได้อย่างง่ายดาย
ข้อความที่ฉันใช้ในการเรียนรู้ STG นั้นสามารถเข้าถึงได้ค่อนข้างง่าย: การใช้ภาษาฟังก์ชั่นขี้เกียจบนฮาร์ดแวร์สต็อก: เครื่อง G-Spinless Taglessโดย Simon Peyton-Jones มากของกระดาษที่เกี่ยวข้องกับรายละเอียดการปฏิบัติ แต่ผมขอแนะนำส่วนที่ 4 โดยเฉพาะอย่างยิ่งเป็นคำอธิบายด้านบนลงด้านล่างของภาษา STG map
ที่ให้แรงจูงใจสำหรับบางส่วนของการตัดสินใจการออกแบบเคาน์เตอร์และให้คำแปลของตัวอย่างที่คุ้นเคยเช่น