คำถามติดแท็ก category-theory

6
หมวดหมู่ทฤษฎีมีประโยชน์สำหรับการเรียนรู้การเขียนโปรแกรมการทำงานหรือไม่
ฉันกำลังเรียน Haskell และฉันก็หลงใหลในภาษานี้ อย่างไรก็ตามฉันไม่มีพื้นฐานทางคณิตศาสตร์หรือ CS อย่างจริงจัง แต่ฉันเป็นโปรแกรมเมอร์ซอฟต์แวร์ที่มีประสบการณ์ ฉันต้องการเรียนรู้ทฤษฎีหมวดหมู่เพื่อที่ฉันจะสามารถพัฒนาได้ดีขึ้นที่ Haskell ฉันควรเรียนรู้หัวข้อใดในทฤษฎีหมวดหมู่เพื่อเป็นพื้นฐานที่ดีสำหรับการทำความเข้าใจ Haskell

2
ภาษาการเขียนโปรแกรมและรากฐานของคณิตศาสตร์มีความสัมพันธ์กันอย่างไร
โดยพื้นฐานฉันรู้พื้นฐานสามประการเกี่ยวกับคณิตศาสตร์ ทฤษฎีเซต ทฤษฎีประเภท ทฤษฎีหมวดหมู่ ดังนั้นการเขียนโปรแกรมภาษาและรากฐานของคณิตศาสตร์ในทางใดบ้าง? แก้ไข คำถามเดิมคือ "ภาษาการเขียนโปรแกรมตามรากฐานของคณิตศาสตร์" กับ paragarph เพิ่มของ และการประยุกต์ใช้ทฤษฎี 1. ทฤษฎีประเภทในCoq 2. ตั้งทฤษฎีในSETL 3. ทฤษฎีหมวดหมู่ในHaskell ตามคำแนะนำนี้ถูกเปลี่ยนเป็น "ภาษาการเขียนโปรแกรมและพื้นฐานทางคณิตศาสตร์เกี่ยวข้องอย่างไร" เนื่องจากนี่เป็นหนึ่งในคำถามเหล่านั้นที่ฉันไม่รู้เกี่ยวกับสิ่งที่ฉันถาม แต่ต้องการเรียนรู้บางอย่างฉันจึงแก้ไขคำถามเพื่อให้มีค่ามากขึ้นสำหรับการเรียนรู้และอื่น ๆ แต่ยังทิ้งรายละเอียดไว้เพื่อไม่ให้คำตอบปัจจุบันโดย Andrej Bauer ดูเหมือนปิดหัวข้อ ขอบคุณสำหรับความคิดเห็นทั้งหมดและคำตอบจนถึงตอนนี้ฉันกำลังเรียนรู้จากพวกเขา

3
อะไรคือความสัมพันธ์ระหว่างหน้าที่ใน SML และทฤษฎีหมวดหมู่?
ตามความคิดเดียวกันกับคำกล่าวนี้โดยAndrej Bauerในคำตอบนี้ ชุมชน Haskell ได้มีการพัฒนาเทคนิคจำนวนหนึ่งแรงบันดาลใจจากทฤษฎีประเภทที่monadsเป็นที่รู้จักกันดีที่สุด แต่ไม่ควรจะสับสนกับmonads อะไรคือความสัมพันธ์ระหว่างfunctorsใน SML และfunctorsในทฤษฎีหมวดหมู่? เนื่องจากฉันไม่รู้เกี่ยวกับรายละเอียดของฟังก์ชั่นในภาษาอื่นเช่น Haskell หรือ OCaml หากมีข้อมูลที่มีค่ากรุณาเพิ่มหัวข้อสำหรับภาษาอื่นด้วย

2
ทฤษฎีหมวดหมู่หมายถึงอะไรยังไม่รู้ว่าจะจัดการกับฟังก์ชันที่มีลำดับสูงกว่าได้อย่างไร
ในการอ่านคำตอบของ Uday Reddy ต่อความสัมพันธ์ระหว่างหน้าที่ใน SML กับทฤษฎีหมวดหมู่คืออะไร? รัฐ Uday ทฤษฎีหมวดหมู่ยังไม่ทราบวิธีจัดการกับฟังก์ชั่นที่มีลำดับสูงกว่า สักวันมันจะ เนื่องจากฉันคิดว่าทฤษฎีหมวดหมู่สามารถใช้เป็นรากฐานสำหรับคณิตศาสตร์ได้ดังนั้นจึงควรเป็นไปได้ที่จะได้รับฟังก์ชันคณิตศาสตร์และฟังก์ชันลำดับสูงทั้งหมด ดังนั้นสิ่งที่มีความหมายตามทฤษฎีหมวดหมู่ยังไม่ทราบวิธีการจัดการกับฟังก์ชั่นการสั่งซื้อที่สูงขึ้น? การพิจารณาทฤษฎีหมวดหมู่เป็นพื้นฐานสำหรับคณิตศาสตร์หรือไม่

2
ทฤษฎีหมวดหมู่ (ไม่ใช่) สำหรับการเขียนโปรแกรม?
หลังจากเรียนรู้ Haskell และภาษา FP อื่น ๆ ที่ไม่บริสุทธิ์ฉันก็ตัดสินใจอ่านเกี่ยวกับทฤษฎีหมวดหมู่ หลังจากได้รับความเข้าใจที่ดีเกี่ยวกับทฤษฎีหมวดฉันเริ่มคิดเกี่ยวกับแนวคิดของทฤษฎีหมวดหมู่ที่สามารถใช้ในการคิดเกี่ยวกับการออกแบบโปรแกรมแต่ไม่ว่าฉันจะพยายามอย่างหนักเพียงใดดูเหมือนว่านี่ไม่ใช่วิธีที่จะไป หลังจากใช้ความพยายามไม่สำเร็จหลายครั้งเพื่อเชื่อมโยงทฤษฎีหมวดหมู่กับโปรแกรมการออกแบบฉันได้ข้อสรุปว่า: หมวดหมู่ทฤษฎีจะเป็นประโยชน์เมื่อการออกแบบภาษาการเขียนโปรแกรม ทฤษฎีหมวดหมู่ไม่ใช่สิ่งที่คุณใช้เมื่อออกแบบโปรแกรม (แม้เมื่อใช้ภาษาที่ได้รับการออกแบบตามหลักการหมวดหมู่) ตัวอย่างเช่น: เมื่อการเขียนโปรแกรมใน Haskell คุณจะใช้ชนิดตัวสร้างประเภทฟังก์ชั่นฟังก์ชั่นการสั่งซื้อที่สูงขึ้น ฯลฯ เพื่อออกแบบโปรแกรมของคุณไม่ใช่แนวคิดทฤษฎีหมวดหมู่ โดยสรุปเรามีระบบเลเยอร์ด้านล่าง (คำสั่งซื้อต่ำถึงสูง): หมวดหมู่ทฤษฎี -> ภาษาการเขียนโปรแกรม -> โปรแกรม ที่ชั้นโดยเฉพาะอย่างยิ่งคุณใช้แนวคิดของชั้นพื้นฐานทันที ความเข้าใจนี้ถูกต้องหรือไม่ ถ้าไม่ใช่และคุณเชื่อว่าในการออกแบบโปรแกรมเราสามารถใช้แนวคิดทฤษฎีหมวดหมู่ได้โดยตรงโปรดอ้างอิงบทความหรือบทความในบล็อกที่แสดงให้เห็น หมายเหตุ: โดยการออกแบบโปรแกรมฉันหมายถึงการออกแบบโปรแกรมตามแนวคิดที่แตกต่างกันเช่นการทำงานพร้อมกัน, การขนาน, ปฏิกิริยา, การส่งข้อความเป็นต้น

1
การเกิดขึ้นตามธรรมชาติของพระที่ใช้ประโยชน์จากกรอบหมวดหมู่ตามทฤษฎี
วันนี้คำปราศรัยของ Henning Kerstan ("ร่องรอยความหมายสำหรับระบบการเปลี่ยนผ่านน่าจะเป็น") เผชิญหน้ากับฉันด้วยทฤษฎีหมวดหมู่เป็นครั้งแรก เขาได้สร้างกรอบทางทฤษฎีสำหรับการอธิบายระบบการเปลี่ยนแปลงที่น่าจะเป็นไปได้และพฤติกรรมของพวกเขาในลักษณะทั่วไปคือด้วยชุดของรัฐที่ไม่มีที่สิ้นสุดนับไม่ถ้วนและความคิดที่แตกต่างกันของร่องรอย ด้วยเหตุนี้เขาจะไปผ่านหลายชั้นของนามธรรมไปจนจบลงด้วยความคิดของmonadsซึ่งเขารวมกับทฤษฎีการวัดในการสร้างรูปแบบที่เขาต้องการ ในที่สุดเขาใช้เวลา 45 นาทีในการสร้างกรอบเพื่ออธิบายแนวคิดที่เขาอธิบายไว้ใน 5 นาที ฉันซาบซึ้งกับความงามของวิธีการ (มันใช้งานได้ดีกับความคิดที่แตกต่างกันของร่องรอย) แต่มันก็ทำให้ฉันรู้สึกเหมือนเป็นความสมดุลที่แปลกประหลาด ฉันต่อสู้เพื่อดูว่า monad คืออะไรจริง ๆและแนวคิดทั่วไปมีประโยชน์อย่างไรในแอปพลิเคชัน (ทั้งในทางทฤษฎีและปฏิบัติ) มันคุ้มค่ากับความพยายามหรือไม่ผลที่ตามมาคืออะไร? ดังนั้นคำถามนี้: มีปัญหาที่เกิดขึ้นตามธรรมชาติ (ในแง่ของ CS) หรือไม่ซึ่งความคิดเชิงนามธรรมของพระสงฆ์สามารถนำไปใช้และช่วย (หรือเป็นเครื่องมือ) เพื่อให้ได้ผลลัพธ์ที่ต้องการ (ไม่ว่าจะด้วยวิธีใดก็ตาม

2
คำขออ้างอิง: ทฤษฎีหมวดหมู่ตามที่ใช้กับระบบการพิมพ์
ฉันคอยฟังว่าจะต้องเรียนรู้ทฤษฎีหมวดหมู่อย่างไรเพื่อให้เข้าใจทฤษฎีภาษาโปรแกรมอย่างแท้จริง จนถึงตอนนี้ฉันได้เรียนรู้ PL จำนวนมากโดยไม่ต้องก้าวเข้าสู่หมวดหมู่ อย่างไรก็ตามฉันคิดว่ามันเป็นเวลาที่จะก้าวกระโดดเพื่อดูสิ่งที่ฉันได้หายไป น่าเสียดายที่ไม่มีแหล่งข้อมูลใดที่ฉันสามารถค้นหาได้ทำการเชื่อมต่อกับระบบประเภทหรือการเขียนโปรแกรม พวกเขาบอกว่าเป็นการแนะนำทฤษฎีหมวดหมู่สำหรับนักวิทยาศาสตร์คอมพิวเตอร์ แต่หลังจากนั้นก็เปลี่ยนไปเป็นเรื่องไร้สาระทั่วไป ฉันเดาคำถามของฉันเป็นสองเท่าจริง: ทฤษฎีหมวดหมู่จำเป็นสำหรับการทำความเข้าใจ "แนวคิดที่ลึกซึ้ง" ใน PL หรือไม่? แหล่งที่มาที่อธิบายทฤษฎีหมวดหมู่จากมุมมองของแอปพลิเคชันเชิงปฏิบัติเพื่อพิมพ์ระบบและการเขียนโปรแกรมคืออะไร จนถึงตอนนี้สิ่งที่ไกลที่สุดที่ฉันได้รับคือความคิดที่คลุมเครือของ functors (ซึ่งดูเหมือนจะไม่เกี่ยวข้องกับ functors ใน ML เท่าที่ฉันจะบอกได้) ฉันกลัวสิ่งที่เป็นนามธรรมฉันจะต้องเก็บไว้ในหัวของฉันที่จะเข้าใจพระจากมุมมองตามทฤษฎีหมวดหมู่

1
มีทฤษฎีมอร์ฟ (isomorphism) ระหว่างหมวดหมู่ย่อยกับพีชคณิตเชิงสัมพันธ์หรือไม่?
มันมาจากมุมมองข้อมูลขนาดใหญ่ โดยทั่วไปเฟรมเวิร์กจำนวนมาก (เช่น Apache Spark) "ชดเชย" ขาดการดำเนินการเชิงสัมพันธ์ด้วยการจัดหาอินเทอร์เฟซเหมือน Functor / Monad และมีการเคลื่อนไหวที่คล้ายกันต่อการแปลง cat-to-SQL (Slick in Scala) ตัวอย่างเช่นเราต้องการการเข้าร่วมที่เป็นธรรมชาติ (สมมติว่าไม่มีการซ้ำซ้อนกับดัชนี) สำหรับการคูณเวกเตอร์องค์ประกอบที่ชาญฉลาดจากมุมมอง SQL ซึ่งอาจถือได้ว่าเป็นzip + map(multiply) (Spark's MLib แต่มีอยู่แล้วElementwiseProduct)ในแอปพลิเคชันของทฤษฎีหมวดหมู่ เพียงแค่พูด (ตัวอย่างต่อไปนี้อยู่ใน Scala): subcase อ้างอิงของเข้าร่วมอาจจะคิดว่าเป็น functor applicative (คอลเลกชันเรียงมากกว่า) ซึ่งในทางกลับกันมันจะช่วยให้เราzip: ->List(1,2,3).ap(List(2,4,8).map(a => (b: Int) => a * b)) (List(1,2,3) zip List(2,4,8)).map(x => x._1 * x._2)ยิ่งไปกว่านั้นเราสามารถชักจูงให้ผู้อื่นเข้าร่วมโดยสมมติว่ามีgroupByการดำเนินการล่วงหน้า การเข้าร่วมและการเลือกอื่น …

4
อะไรคือความแตกต่างทางความหมายระหว่างหมวดหมู่และชุด?
ในคำถามนี้ผมถามว่าอะไรคือความแตกต่างระหว่างชุดและประเภท คำตอบเหล่านี้ได้รับการชี้แจงอย่างชัดเจน (เช่น @AndrejBauer) ดังนั้นในความกระหายความรู้ของฉันฉันส่งไปยังสิ่งล่อใจของการถามเกี่ยวกับประเภทเดียวกัน: เวลาที่ฉันอ่านเกี่ยวกับทฤษฎีประเภท (ซึ่งเป็นที่ยอมรับค่อนข้างเป็นทางการ) ทุกฉันไม่สามารถจริงๆเข้าใจว่ามันแตกต่างจากการตั้งทฤษฎีเป็นรูปธรรม ดังนั้นในทางที่เป็นรูปธรรมมากที่สุดเท่าที่จะเป็นไปได้สิ่งที่บอกเป็นนัย เกี่ยวกับxxx C x ∈ S x x G r pว่าอยู่ในหมวดหมู่เมื่อเทียบกับการพูดว่า ? (เช่นอะไรคือความแตกต่างระหว่างการพูดว่าเป็นกลุ่มเมื่อเทียบกับที่บอกว่าอยู่ในหมวดหมู่ ?)คCCx ∈ Sx∈Sx\in Sxxxxxxจีอาร์พีGrp\mathrm {Grp} (คุณสามารถเลือกหมวดหมู่และชุดที่ทำให้การเปรียบเทียบชัดเจนที่สุด)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.