วิธีอ่านกฎการพิมพ์


18

ฉันเริ่มอ่านบทความวิจัยภาษามากขึ้นเรื่อย ๆ ฉันพบว่ามันน่าสนใจมากและเป็นวิธีที่ดีในการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรมโดยทั่วไป อย่างไรก็ตามมักจะมีส่วนที่ฉันมักจะต่อสู้กับ (ใช้เวลาตัวอย่างเช่นส่วนที่สามของ) มานี้เนื่องจากฉันขาดพื้นฐานทางทฤษฎีในวิทยาการคอมพิวเตอร์: ประเภทกฎ

มีหนังสือดี ๆ หรือแหล่งข้อมูลออนไลน์ให้เริ่มต้นในพื้นที่นี้หรือไม่? Wikipediaนั้นคลุมเครืออย่างมากและไม่ได้ช่วยผู้เริ่มต้น


1
คุณอ่านบทความที่เชื่อมโยงเกี่ยวกับกฎการอนุมานหรือไม่?
ราฟาเอล

2
TAPLของ Benjamin Pierce นั้นดีจริงๆ
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


25

ในระบบประเภทส่วนใหญ่กฎชนิดทำงานร่วมกันเพื่อกำหนดการตัดสินของแบบฟอร์ม:

Γอี:τ

รัฐนี้ว่าในบริบทการแสดงออกอีมีประเภทτ Γเป็นการทำแผนที่ของตัวแปรอิสระของeกับชนิดของพวกเขาΓอีτ
Γอี

ระบบประเภทจะประกอบด้วยชุดของสัจพจน์และกฎ (ระบบอย่างเป็นทางการของกฎการอนุมานตามที่ราฟาเอลชี้ให้เห็น)

สัจพจน์เป็นแบบฟอร์ม

Γอี:τ

รัฐนี้ว่าการตัดสินถือ (เสมอ)Γอี:τ

ตัวอย่างคือ

x:τx:τ

ซึ่งระบุว่าภายใต้สมมติฐานว่าประเภทของตัวแปรเป็นτแล้วแสดงออกxมีประเภทτxτxτ

กฎการอนุมานใช้ข้อเท็จจริงที่ได้รับการพิจารณาแล้วและสร้างข้อเท็จจริงที่ใหญ่กว่าจากพวกเขา ตัวอย่างเช่นกฎการอนุมาน

Γอี1:ττ'Γอี2:τΓอี1 อี2:τ'

บอกว่าถ้าฉันมีที่มาของความเป็นจริงที่และที่มาของความจริงที่แกมมาอี2 : τแล้วฉันจะได้รับที่มาของความเป็นจริงที่แกมมาอี1 อี2 : τ ' . ในกรณีนี้นี่เป็นกฎสำหรับการพิมพ์แอปพลิเคชันฟังก์ชันΓอี1:ττ'Γอี2:τΓอี1 อี2:τ'

การอ่านกฎนี้มีสองวิธี:

  • จากบนลงล่าง - กำหนดสองนิพจน์ (ฟังก์ชั่นและอีกนิพจน์) และข้อ จำกัด บางอย่างเกี่ยวกับประเภทของพวกเขาเราสามารถสร้างการแสดงออกอื่น (การประยุกต์ใช้ฟังก์ชั่นการแสดงออก) กับประเภทที่กำหนด
  • bottom-up - ให้นิพจน์ที่เป็นในกรณีนี้การใช้งานฟังก์ชั่นกับการแสดงออกบางอย่างวิธีการพิมพ์นี้คือการพิมพ์ครั้งแรกที่ทั้งสองแสดงออกเพื่อให้แน่ใจว่าประเภทของพวกเขาตอบสนองข้อ จำกัด บางอย่างคือว่าเป็นครั้งแรก ประเภทฟังก์ชั่นและที่สองมีประเภทอาร์กิวเมนต์ของฟังก์ชั่น

กฎการอนุมานบางข้อยังใช้งานโดยเพิ่มส่วนผสมใหม่ลงไป (ดูจากล่างขึ้นบน) นี่คือกฎสำหรับλ -abstraction:Γλ

Γx:τอี:τ'Γλx.อี:ττ'

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

ยกตัวอย่างเช่นที่มาของการพิมพ์ของการแสดงออกคือλ.λx. x

หนังสือสองเล่มที่ดีมากสำหรับการเรียนรู้เกี่ยวกับระบบการพิมพ์คือ:

:ττ',x:τ:ττ':ττ',x:τx:τ:ττ',x:τ x:τ':ττ'λx. x:τ'λ.λx. x:τ'

หนังสือทั้งสองเล่มมีเนื้อหาครอบคลุมมาก แต่พวกเขาเริ่มต้นช้าสร้างรากฐานที่มั่นคง


8

มีการสอนออนไลน์แบบอินเทอร์แอคทีฟที่น่ารักเกี่ยวกับแคลคูลัสตามลำดับซึ่งอาจช่วยในการสร้างสัญชาตญาณบางอย่างและรู้สึกว่าการอนุมานทำงานอย่างไร: บทแนะนำเชิงโต้ตอบของแคลคูลัสตามลำดับ


3
มันเจ๋งจริงๆ
Dave Clarke

1
น่ากลัว ฉันต้องหาแท็ก wiki เพื่อใส่ลงไป
ราฟาเอล

5

ในหน้า Wikipedia นั้นขอแนะนำ " Type Systems, Luca Cardelli, แบบสำรวจ ACM Computing " ซึ่งเป็นการสำรวจ 2 หน้าซึ่งสามารถช่วยให้คุณเข้าใจวิธีการอ่านกฎ อย่างไรก็ตามวิธีการอ่านกฎได้อธิบายอย่างสมบูรณ์ในหน้า Wikipedia นั้น (หรือดีกว่าในการสำรวจ 2 หน้า) อย่างไรก็ตามเพื่อให้เข้าใจสิ่งทั้งหมดคุณต้องเข้าใจว่าระบบการพิมพ์คืออะไร (ประกอบด้วยกฎหลายข้อ) ซึ่งบทความ Wikipedia " ระบบประเภท " เป็นการเริ่มต้นที่ดี (และคุณมีหนังสือหลายเล่มในส่วน " อ้างอิง " ของสิ่งนั้น หน้าหากคุณต้องการไปต่อ)

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