polymorphism ระดับสูงกว่าประเภทที่ไม่มีกล่อง
ฉันมีภาษาที่ไม่มีประเภทกล่องโดยค่าเริ่มต้นด้วยการอนุมานประเภทตาม Hindley – Milner ฉันต้องการเพิ่ม polymorphism ที่มีอันดับสูงกว่าโดยเฉพาะอย่างยิ่งสำหรับการทำงานกับประเภทที่มีอยู่ ฉันคิดว่าฉันเข้าใจวิธีตรวจสอบประเภทเหล่านี้ แต่ฉันไม่แน่ใจว่าต้องทำอย่างไรเมื่อรวบรวม ขณะนี้ฉันรวบรวมคำจำกัดความ polymorphic โดยการสร้างความเชี่ยวชาญเช่นเทมเพลต C ++ เพื่อให้สามารถทำงานกับค่าที่ไม่ได้ทำกล่อง เช่นให้คำจำกัดความของf<T>หากโปรแกรมเรียกใช้เท่านั้นf<Int32>และf<Char>จากนั้นเฉพาะความเชี่ยวชาญเหล่านั้นจะปรากฏในโปรแกรมรวบรวม (ตอนนี้ฉันกำลังรวบรวมโปรแกรมทั้งหมดไว้) แต่เมื่อผ่านฟังก์ชั่น polymorphic เป็นอาร์กิวเมนต์ฉันไม่เห็นว่าฉันสามารถสร้างความเชี่ยวชาญเฉพาะทางแบบสแตติกได้เนื่องจากฟังก์ชั่นสามารถเลือกได้ที่รันไทม์ ฉันไม่มีทางเลือกนอกจากใช้การแสดงแบบกล่องหรือไม่? หรือมีวิธีแก้ไขปัญหาหรือไม่ ความคิดแรกของฉันคือการเข้ารหัสอย่างใด rank- n polymorphism เป็นอันดับ 1 แต่ผมไม่เชื่อว่ามันเป็นไปได้ในทั่วไปเพราะสูตรในตรรกะที่สร้างสรรค์ไม่จำเป็นต้องมี prenex แบบปกติ