ประเภทคือคุณสมบัติของการคำนวณ นี่คือสิ่งที่คุณเขียนทางด้านขวาของลำไส้ใหญ่
ผมขออธิบายอย่างละเอียด โปรดทราบว่าคำศัพท์นั้นไม่ได้มาตรฐานอย่างสมบูรณ์: บทความหรือหนังสือบางเล่มอาจใช้คำที่แตกต่างกันสำหรับแนวคิดบางอย่าง
ระยะเป็นองค์ประกอบของไวยากรณ์นามธรรมที่มีจุดมุ่งหมายเพื่อเป็นตัวแทนของการคำนวณ โดยสังหรณ์ใจมันเป็นต้นไม้แยก อย่างเป็นทางการมันเป็นต้นไม้ที่ จำกัด ที่โหนดเป็นของตัวอักษรบางตัว untyped แคลคูลัสกำหนดไวยากรณ์สำหรับเงื่อนไข ตัวอย่างเช่นแคลคูลัสแลมบ์ดา (untyped) มีคำศัพท์ (เขียน , N , ฯลฯ ) ที่สร้างจากโหนดสามประเภท:MN
- ตัวแปรของ arity 0 (คอลเลกชันที่นับได้ของมัน), เขียน , y , ฯลฯxy
- แอพลิเคชันของตัวแปรของ arity 1 (คอลเลกชัน denumerable ดังกล่าวกับ bijection เพื่อตัวแปร) เขียนฯลฯλx.M
- แอปพลิเคชันของ arity 2 เขียน .Mยังไม่มีข้อความ
คำศัพท์คือการสร้างประโยค ความหมายที่เกี่ยวข้องกับข้อตกลงในการคำนวณ มีหลายประเภทของอรรถศาสตร์ที่ใช้กันทั่วไปมากที่สุดในการปฏิบัติงาน (อธิบายว่าจะเปลี่ยนเงื่อนไขเป็นข้อตกลงอื่น ๆ ) หรือdenotational (อธิบายข้อตกลงโดยการเปลี่ยนแปลงในพื้นที่อื่นมักสร้างจากทฤษฎีเซต)
ประเภทเป็นทรัพย์สินของข้อตกลง ระบบการพิมพ์สำหรับแคลคูลัส untyped อธิบายคำที่มีประเภท ในทางคณิตศาสตร์ที่แกนกลางระบบพิมพ์คือความสัมพันธ์ระหว่างคำศัพท์และประเภท แม่นยำมากขึ้นระบบการพิมพ์เป็นตระกูลของความสัมพันธ์ดังกล่าวซึ่งจัดทำดัชนีโดยบริบท - โดยทั่วไปแล้วบริบทจะให้ประเภทตัวแปรอย่างน้อยที่สุด (เช่นบริบทคือฟังก์ชันบางส่วนจากตัวแปรเป็นประเภท) ซึ่งคำดังกล่าวอาจมีประเภทเท่านั้น ในบริบทที่ให้ประเภทสำหรับตัวแปรอิสระทั้งหมด วัตถุทางคณิตศาสตร์ชนิดใดที่ขึ้นอยู่กับประเภทของระบบ
ระบบประเภทบางประเภทอธิบายด้วยประเภทเป็นเซตโดยใช้แนวคิดของทฤษฎีเซตเช่นการแยกการรวมและการเข้าใจ นี่เป็นข้อได้เปรียบของการพักผ่อนบนพื้นฐานทางคณิตศาสตร์ที่คุ้นเคย ข้อ จำกัด ของวิธีการนี้คือไม่อนุญาตให้มีเหตุผลเกี่ยวกับประเภทที่เทียบเท่า
ระบบหลายประเภทอธิบายประเภทของตัวเองเป็นคำศัพท์ในประเภทแคลคูลัส ขึ้นอยู่กับระบบพิมพ์คำเหล่านี้อาจเป็นคำเดียวกันหรือคำอื่น ฉันจะใช้คำพื้นฐานวลีเพื่ออ้างถึงคำของแคลคูลัสที่อธิบายการคำนวณ ยกตัวอย่างเช่นแคลคูลัสแลมบ์ดาพิมพ์เพียงแค่ใช้แคลคูลัสต่อไปนี้ประเภท (เขียนฯลฯ ):τ
- ประเภทฐานของ arity 0 (คอลเลกชันที่ จำกัด หรือนับได้ของมัน) เขียน , B , ฯลฯAB
- ฟังก์ชั่นของ arity 2 เขียน 1τ0→ τ1
ความสัมพันธ์ระหว่างข้อตกลงและประเภทที่กำหนดแคลคูลัสแลมบ์ดาพิมพ์ก็มักจะถูกกำหนดโดยกฎการพิมพ์ กฎการพิมพ์ไม่ได้เป็นเพียงวิธีเดียวในการกำหนดระบบประเภท แต่เป็นกฎทั่วไป มันทำงานได้ดีสำหรับระบบประเภท compositional เช่นประเภทระบบที่ประเภท (s) ของคำที่ถูกสร้างขึ้นจากประเภทของคำ กฎการพิมพ์กำหนดระบบประเภท inductively: กฎการพิมพ์แต่ละอันเป็นสัจพจน์ที่ระบุว่าสำหรับการสร้างอินสแตนซ์ของสูตรเหนือกฎแนวนอนใด ๆ สูตรด้านล่างกฎก็เป็นจริงเช่นกัน ดูวิธีอ่านกฎการพิมพ์ สำหรับรายละเอียดเพิ่มเติม มีแคลคูลัสแลมบ์ดาพิมพ์ทัวริงอยู่หรือไม่? อาจเป็นที่สนใจ
สำหรับแคลคูลัสแลมบ์ดาพิมพ์เพียงแค่การพิมพ์คำพิพากษา หมายความว่าMมีประเภทτในบริบทΓ ฉันไม่ได้ระบุความหมายอย่างเป็นทางการของบริบท
x : τ ∈ แกมมาแกมมา⊢ M: τMτΓ
x : τ∈ แกมมาแกมมา⊢ x : τ( Γ )Γ , x : τ0⊢ M: τ1แกมมา⊢ λ x M: τ0→ τ1( →ฉัน)แกมมา⊢ M: τ0→ τ1แกมมา⊢ N: τ0แกมมา⊢ Mยังไม่มีข้อความ: τ1( → E)
ตัวอย่างเช่นถ้าและBประเภทจะขึ้นอยู่แล้วλ x λ Y xABมีประเภท ( A → B ) → A → Bในบริบทใด ๆ (จากล่างขึ้นบนนำไปใช้ ( → I )สองครั้งจากนั้น ( → E )และสุดท้าย ( Γ )ในแต่ละสาขา)λ x λ y. xY( A → B ) → A → B( →ฉัน)( → E)( Γ )
มันเป็นไปได้ที่จะตีความประเภทของแคลคูลัสแลมบ์ดาที่พิมพ์ออกมาเป็นชุด จำนวนนี้จะให้ความหมายเชิง Denotational สำหรับประเภท ความหมายเชิง Denotational ที่ดีสำหรับคำศัพท์พื้นฐานจะกำหนดให้กับคำศัพท์พื้นฐานแต่ละคำว่าสมาชิกของการ denotation ทุกประเภท
ทฤษฎีประเภท Intuitionistic (หรือเรียกอีกอย่างว่าทฤษฎีประเภทมาร์ติน - เลิฟ) มีความซับซ้อนมากกว่าที่จะพิมพ์แลมบ์ดาแคลคูลัสเนื่องจากมันมีองค์ประกอบอีกมากมายในแคลคูลัสของประเภท (และยังเพิ่มค่าคงที่ไม่กี่คำ) แต่หลักการสำคัญเหมือนกัน คุณลักษณะที่สำคัญของทฤษฎีประเภทมาร์ติน - โลฟคือประเภทนั้นสามารถมีคำศัพท์พื้นฐานได้ (พวกมันขึ้นอยู่กับประเภท ): เอกภพของคำพื้นฐานและจักรวาลประเภทนั้นเหมือนกัน การเรียงลำดับเช่นการกำหนดประเภทให้เป็นเงื่อนไขในทฤษฎีการเขียนใหม่)
มีระบบการพิมพ์ที่ดำเนินการต่อไปและผสมผสานประเภทและคำศัพท์พื้นฐานอย่างสมบูรณ์ดังนั้นจึงไม่มีความแตกต่างระหว่างทั้งสอง ระบบการพิมพ์ดังกล่าวจะกล่าวว่าเป็นลำดับที่สูงกว่า ในนิ่วเช่นประเภทมีชนิด - ประเภทสามารถปรากฏบนด้านซ้ายมือของ:แคลคูลัสของการก่อสร้างเป็นกระบวนทัศน์ของลำดับที่สูงกว่าประเภทขึ้นอยู่กับ แลมบ์ดาก้อน (หรือเรียกว่า Barendregt ก้อน) ระบบการพิมพ์จัดประเภทในแง่ของการไม่ว่าจะอนุญาตให้ใช้คำขึ้นอยู่กับประเภท ( polymorphism - บางแง่ฐานประกอบด้วยประเภท subterms) ประเภทขึ้นอยู่กับข้อตกลง (ประเภทขึ้นอยู่) หรือประเภทขึ้นอยู่ ในประเภท ( ตัวดำเนินการประเภท - แคลคูลัสประเภทมีแนวคิดของการคำนวณ):
ระบบประเภทส่วนใหญ่ได้รับความหมายทางทฤษฎีเซตเพื่อเชื่อมโยงกับรากฐานทางคณิตศาสตร์ตามปกติ
ภาษาโปรแกรมและรากฐานของคณิตศาสตร์มีความสัมพันธ์กันอย่างไร และ
มุมมองเชิงความหมายและความแตกต่างของประเภทฟังก์ชั่นคืออะไร? อาจเป็นที่สนใจของที่นี่ นอกจากนี้ยังมีงานเกี่ยวกับการใช้ทฤษฎีประเภทเป็นรากฐานของคณิตศาสตร์ - ทฤษฎีเซตเป็นรากฐานทางประวัติศาสตร์ แต่ก็ไม่ใช่ทางเลือกเดียวที่เป็นไปได้ ทฤษฎีประเภท Homotopyเป็นเหตุการณ์สำคัญในทิศทางนี้: มันอธิบายความหมายของทฤษฎีประเภท intuitionistic โดยเจตนาในแง่ของทฤษฎี homotopyและสร้างทฤษฎีเซตในกรอบนี้
ผมขอแนะนำให้เบนจามินเพียร์ซของหนังสือประเภทและการเขียนโปรแกรมภาษาและความก้าวหน้าหัวข้อในประเภทและการเขียนโปรแกรมภาษา พวกเขาสามารถเข้าถึงได้ในระดับปริญญาตรีใด ๆ ที่ไม่มีข้อกำหนดเบื้องต้นอื่น ๆ นอกเหนือจากความคุ้นเคยขั้นพื้นฐานกับการให้เหตุผลทางคณิตศาสตร์อย่างเป็นทางการ TAPL อธิบายระบบหลายประเภท; ประเภทที่ขึ้นอยู่กับเป็นเรื่องของบทที่ 2 ของ ATTAPL