ทฤษฎีcategoryสำหรับโปรแกรมเมอร์
Translator’s Preface
ยินดีต้อนรับสู่โลกของนามธรรมไร้สาระ(Abstract Nonsense). ผมได้แปลมาจากrelease versionนี้
ขออนุญาติให้ผมได้อธิบายสักนิดหนึ่ง ผมอยากจะเรียนคณิตศาสตร์ที่สูงกว่าcalculusเบื้องต้นและได้เห็นว่ากับหนังสือเล่มนี้เป็นสะพานที่ดีในการข้ามจากพื้นฐานcomputer scienceของผม(ถึงแม้ผมจะเคยเรียนfunctional programmingมาก่อนเมื่อสามปีที่แล้วและจำHaskellได้แค่นิดหน่อย)ไปยังทฤษฎีcategory ก็เพราะว่าหนังสือเล่มนี้ให้ความสำคัญกับความเข้าใจมากกว่าสูตรหรือรายละเอียดเชิงเทคนิคต่างๆ
ดังนั้นส่วนมากของการแปลนี้จึงเกิดขึ้นในระหว่างที่ผมกำลังเรียนเนื้อหาต่างๆ นั้นคือเหตุผลที่“สถานะการแปล”จึงมีอยู่สองแบบ
- (Draft) คำนำไปยังบทที่6จะอยู่ในสถานะdraft ที่ก็จะเป็นส่วนที่ผ่านการproofreadโดยผมที่ละเอียดมากว่าส่วนอื่นๆ เหตุผลที่ผมเลือกที่จะใช้เวลากับส่วนนี้มากว่าส่วนอื่นๆ(สำหรับตอนนี้)ก็เพราะว่า บทเหล่านี้อธิบายแนวทางหลักๆของทฤษฎีcategory(ตัวอย่างเช่นการมองทฤษฎีcategoryในฐานะการศึกษาความสัมพันธ์ระหว่างวัตถุต่างๆ การสร้างแบบสากล monad และอื่นๆ) แต่ยังไม่ลึกลงไปในเชิงเทคนิคมากนัก ดังนั้นเราก็อาจจะมองคำนำ+หกบทแรกหนังสือแยกออกมาก็ได้
- (Sketch): จากบทที่6จนถึงบทที่22จะอยู่ในสถานะsketch โดยส่วนนี้เป็นแกนหลักของหนังสือเล่มนี้ที่รายละเอียดส่วนมากจะอยู่และถูกอธิบาย สถานะการแปลจึงแทบจะเหมือนการจดโน้ตสด(แต่ผมไม่ได้ละรายละเอียดใดๆเลย)ที่ก็จะมีการสะกดผิดอยู่พอสมควรหรือการเรียบประโยคที่แปลกๆ แน่นอนว่าผมจะกลับมาแก้ในอีกไม่นาน
สุดท้ายแล้ว ในส่วนที่เหลือของหนังสื่อเล่นนี้(ในตอนนี้การแปลครอบคลุมไปประมาณ70%)ก็ยังเป็นWIP(ที่ก็หมายความว่าผมกำลังอ่านอยู่) เอาจริงๆเหตุผลที่ผมหยุดที่บทที่22(สำหรับversionนี้)ก็เพราะว่ามันนั้นจบที่การพูดคุยเกี่ยวกับmonadและอธิบายประโยคทองอย่าง “monadนั้นคือแค่monoidในcategoryของendofunctors” 😅
ปล. ผมยังไม่ได้เขียนacknowledgeอย่างเป็นทางการ แต่หนังสื่อเล่มนี้ถูกเขียนโดยการใช้quarto
Welcome to the world of abstract nonsense. This piece is translated from the following release version
Abit of a context, I want to study higher mathematics (beyond basic courses on calculus) and find this book to be a good bridge between my computer science background (although I took a functional programming course three years ago and barely remember Haskell) and category, as it emphasizes intuition over some of the formalism and technical details.
Therefore, most of the translation work here is taking place while I am studying the material. Thus, the “status” of the translation can be split into two types:
- (Draft), which includes a preface to Chapter 6, contains a more careful proofread and edits from me. The reason I choose to spend more time carefully editing only the first few chapters (for now) is because these chapters describe the core approaches to category theory (e.g., category theory as a study of relationships between objects, universal construction, monad etc.) but are not too deep into the technical part, yet. And so, we could take these preface+6 chapters as somewhat an independent introductory book.
- (Sketch): From chapter 7 onward, which is the “meat” of the book and where most of the important details are laid out and expanded. These chapters are almost live-noted, in which they contain various (lots) of misspellings and weird phrasing. Of course, I will revise them in the near future.
Finally, the rest of the book (right now we are covering ~70%) would be an WIP (which also means I am in the middle of reading it). To be honest, the reason I ended at chapter 22 (for this version) is because it ends at the discussion about monads and explains the phrase: monad is just a monoid in the category of endofunctors. 😅
ps. Although I haven’t formally written acknowledgement page, I use quarto to create this book.