อะไรคือหนังสือเกริ่นนำที่ดีเกี่ยวกับทฤษฎีการพิมพ์?


28

ฉันเพิ่งเรียน Haskell และภาษาการเขียนโปรแกรม ใครช่วยแนะนำหนังสือเกี่ยวกับทฤษฎีการพิมพ์บ้างไหม?


คำตอบ:


28

รากฐานซอฟต์แวร์โดย Benjamin C. Pierce เป็นจุดเริ่มต้นที่ดี มันน่าจะเป็นสารตั้งต้นที่ดีสำหรับประเภทและภาษาการเขียนโปรแกรมของเขา นอกจากนี้ยังมีไซมอน ธ อมป์สันประเภททฤษฎีและหน้าที่ Programmingและราร์ดพิสูจน์และประเภท


10
ฉันขอแนะนำให้เตรียมภาษาประเภทและการเขียนโปรแกรมของ Peirce ก่อนรากฐานซอฟต์แวร์ซึ่งสูงกว่า สำหรับใครบางคนที่ต้องการเริ่มต้นช้า ๆ เช่นLambda-Calculus และ Combinatorsโดย Hindley และ Seldin เป็นการแนะนำอย่างนุ่มนวล
Martin Berger

4
ใช่ TAPL เป็นหนังสือ นอกจากนี้ยังมี "หัวข้อขั้นสูงในประเภทและภาษาการเขียนโปรแกรม" ของ Pierce เพื่อติดตามผล
Huck Bennett

@ มาร์ตินเบอเกอร์ฉันลองดูที่สารบัญสำหรับแลมบ์ดา - แคลคูลัสและคอมมิวนิเคเตอร์และดูเหมือนว่าจะเป็นเรื่องเล็กน้อย คุณแน่ใจหรือว่าเป็นการแนะนำมากกว่า TAPL หรือ SF
สตีเวนชอว์

1
@StevenShaw Hindley / Seldin เริ่มต้นด้วยพื้นฐานและดำเนินการช้ามาก แต่ครอบคลุม ส่วนทฤษฎีประเภทไม่ได้ทำอะไรแฟนซี บางทีทฤษฎีพื้นฐานประเภท Simple Basicของ Hindley ก็เหมาะสมเช่นกัน ฉันไม่เคยถือมันไว้ในมือเลย
Martin Berger

10

Barendregts แลมบ์ดาแคลคซีที่มีประเภทเป็นขั้นสูงกว่า แต่ครอบคลุมหัวข้อที่สำคัญบางอย่างในทฤษฎี "คลาสสิค" ของประเภทต่างๆ


ขอบคุณ @cody ผมเคยละเลยที่จะพูดถึงใน Barendregt ของฉันคอลเลกชันของทรัพยากรในเรื่อง
สตีเวนชอว์

9

หนังสือของ Robert Harper ฐานรากเชิงปฏิบัติสำหรับการเขียนโปรแกรมภาษา (มีให้บริการแบบร่างออนไลน์: http://www.cs.cmu.edu/~rwh/plbook/book.pdf ) เป็นทางเลือกที่ค่อนข้างเข้มกว่าประเภทและภาษาการเขียนโปรแกรม


5

มันเพิ่มเติมเกี่ยวกับพื้นฐานทางคณิตศาสตร์และน้อยกว่าเกี่ยวกับวิทยาศาสตร์คอมพิวเตอร์ แต่หนังสือHomotopy Type Theory: Univalent Foundations of Mathematicsมีให้บริการฟรีในรูปแบบ pdf ภายใต้ใบอนุญาต CC


6
ฉันชอบหัวข้อและหนังสือ แต่ชัดเจนว่าไม่ใช่ว่าคุณไม่คุ้นเคยกับกฎของนามธรรมแลมบ์ดาการลดและอื่น ๆ OP มาจากการใช้ Haskell และตอนนี้อยากรู้เกี่ยวกับทฤษฎีประเภทจะต้องงงงวยโดยการตีความของทฤษฎี homotopy ผ่านประเภทข้อมูลประจำตัว 80 หน้าค่ะ :)
Nikolaj-K

1
ฉันเห็นด้วยกับ @NikolajK ว่าหนังสือ Hott นั้นล้ำหน้าเกินไปสำหรับผู้เริ่มต้นทฤษฎีประเภท เส้นทางที่ดีสำหรับโปรแกรมเมอร์ Haskell คือการเรียนรู้Agdaก่อน Agda คือ (ลดความซับซ้อนลงเล็กน้อย) Haskell ด้วยประเภทที่ขึ้นต่อกันและถูกใช้เพื่อทำให้เป็น Hott อย่างเป็นทางการ
Martin Berger

1
ไม่ใช่เกริ่นนำ :)
สตีเวนชอว์

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