มีลำดับชั้นการแสดงออกสำหรับระบบพิมพ์หรือไม่


23

แรงบันดาลใจจากลำดับชั้นที่กว้างขวางนำเสนอในทฤษฎีความซับซ้อนฉันสงสัยว่าลำดับชั้นดังกล่าวยังถูกนำเสนอสำหรับระบบประเภท อย่างไรก็ตามตัวอย่างสองตัวอย่างที่ฉันพบว่ามีทั้งแบบรายการตรวจสอบ (ที่มีคุณสมบัติมุมฉาก) มากกว่าลำดับชั้น (ด้วยระบบประเภทที่แสดงออกอย่างต่อเนื่องมากขึ้น)

สองตัวอย่างที่ฉันได้พบเป็นก้อนแลมบ์ดาและแนวคิดของK-การจัดอันดับความแตกต่าง รายการแรกคือรายการตรวจสอบที่มีสามตัวเลือกส่วนที่สองคือลำดับชั้นที่แท้จริง (แม้ว่าอันดับ k สำหรับค่าเฉพาะของ k นั้นเป็นเรื่องแปลกที่ฉันเชื่อ) คุณสมบัติระบบประเภทอื่น ๆ ทั้งหมดที่ฉันรู้จักส่วนใหญ่จะเป็นแบบมุมฉาก

ฉันสนใจแนวคิดเหล่านี้เพราะฉันออกแบบภาษาของตัวเองและฉันสงสัยมากว่ามันจัดอยู่ในประเภทระบบที่มีอยู่ในปัจจุบัน (ระบบประเภทของฉันค่อนข้างแปลกใหม่เท่าที่ฉันรู้)

ฉันตระหนักว่าแนวคิดของ 'การแสดงออก' อาจจะคลุมเครือเล็กน้อยซึ่งอาจอธิบายได้ว่าทำไมระบบประเภทจึงดูเหมือนรายการตรวจสอบให้ฉัน


4
ฉันแน่ใจว่าการเปรียบเทียบที่แสดงออกอย่างหนักและรวดเร็วสามารถทำได้ระหว่างระบบเชิงทฤษฎีที่มากกว่าเท่านั้น หากคุณกำลังออกแบบภาษาโปรแกรมเต็มรูปแบบคุณสามารถทำการเปรียบเทียบคุณสมบัติแบบคุณลักษณะต่อภาษากับรูปแบบ / แบบฟอร์มที่มีอยู่ น่าเสียดายที่คุณลักษณะหลายอย่างสามารถเข้ารหัสได้ในแง่ของคุณสมบัติอื่น ๆ นี่จะไม่ใช่งานที่ไม่สำคัญ หากคุณสามารถมีประเภทที่แฟนซีเหมือนของสกาล่าหรือของแฮสเค็ลล์คุณก็จะทำได้ดีในแง่ของการแสดงออก
Dave Clarke

3
ฉันควร finsih เขียนบล็อกโพสต์ของฉันที่ "วิธีการเปรียบเทียบภาษาการเขียนโปรแกรม" ...
Andrej Bauer

@ Andrej Bauer: นั่นจะเป็นการเพิ่มเติมที่น่าสนใจสำหรับคำตอบและคำพูดที่มีอยู่แล้วที่นี่ ฉันได้เรียนรู้มาบ้างเล็กน้อยเกี่ยวกับวิธีการนิยาม 'การแสดงออก' - บางทีฉันควรถามว่า ...
Alex ten Brink

ฉันแน่ใจว่าฉันเห็นความแตกต่างของอันดับ 2 ที่ใช้ในบางแห่ง หนึ่งที่ฉันจำได้ในขณะนี้คือ Lammel, Peyton-Jones, Scrap Boilerplate ของคุณ, 2003
Radu GRIGore

2
@Radu GRIGore: ความแตกต่างอันดับ 2 มีความสำคัญเพราะมันช่วยให้การขัดแย้งประเภทที่จะปรากฏในตำแหน่งทวีคูณ contravariant ซึ่งโดยปกติประเภทของความเป็นคู่ช่วยให้การสร้างแบบจำลองประเภทการดำรงอยู่โดยการเข้ารหัสคริสตจักรของพวกเขา อันดับ 3 ให้ปริมาณสากลอีกครั้งและสลับจากที่นั่นดังนั้นจึงมีพลังเพิ่มขึ้นเล็กน้อยเมื่อเปรียบเทียบ
CA McCann

คำตอบ:


22

มีความรู้สึกหลายอย่างของ "ความหมาย" ที่คุณอาจต้องการสำหรับระบบพิมพ์

  1. F

  2. ABFF

  3. มีการแปลงเฉพาะที่ (ในความหมายของกระดาษของ Felleisen บนพลังการแสดงออกของภาษาการเขียนโปรแกรม ) ที่อนุญาตให้โปรแกรมที่พิมพ์ในระบบพิมพ์ในระบบBแต่ไม่ใช่ในทางกลับกัน AB

  4. ระบบหนึ่งพิมพ์รับประกันคุณสมบัติที่ดีกว่าระบบอื่นหรือไม่ ตัวอย่างเช่นระบบพิมพ์เชิงเส้นเพียงแค่ปฏิเสธโปรแกรมมากขึ้น แต่นั่นทำให้พวกเขาสามารถสร้างคำสั่งที่แข็งแกร่งขึ้นเกี่ยวกับโปรแกรมที่พวกเขายอมรับ

น่าเสียดายที่ฉันไม่เชื่อว่ามีการทำงานเกี่ยวกับการจัดหมวดหมู่หรือทำให้เป็นแนวคิดเหล่านี้อย่างเป็นทางการยกเว้นข้อยกเว้นแลมบ์ดาแลมบ์ดาของ Barendregt ตามที่ @cody กล่าวถึง


3
ผมคิดว่าโดย "Felleisen กระดาษลึกซึ้ง" คุณหมายถึงของเขาในการแสดงพลังของการเขียนโปรแกรมภาษา
Martin Berger

ใช่แล้ว ฉันชี้แจงเล็กน้อยของคำตอบ
Sam Tobin-Hochstadt

13

ฉันไม่แน่ใจว่าฉันมีคำตอบที่น่าพอใจสำหรับคำถามของคุณ แต่ถ้าคุณพิจารณา Pure Type Systems ซึ่งเป็นลักษณะทั่วไปของระบบที่พบในแลมบ์ดาคิวบ์ (อย่างละเอียดถ้าภาพรวมค่อนข้างเก่าสามารถพบได้ในข้อความ Barendregt แบบคลาสสิก ) จากนั้นมีความคิดตามธรรมชาติของลำดับชั้นสอง:

  1. ΓA t:TΓB t:TΓ,tT:(,,)PTS ในแง่ที่ว่ามี morphism จาก PTS อื่น ๆ สิ่งนี้สามารถมองได้ว่าเป็นการวัดความหมายของระบบประเภทซึ่ง PTS สุดท้ายคือระบบที่แสดงออกที่สุด

  2. ABAFωECC

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.