การเกิดขึ้นตามธรรมชาติของพระที่ใช้ประโยชน์จากกรอบหมวดหมู่ตามทฤษฎี


18

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

ในที่สุดเขาใช้เวลา 45 นาทีในการสร้างกรอบเพื่ออธิบายแนวคิดที่เขาอธิบายไว้ใน 5 นาที ฉันซาบซึ้งกับความงามของวิธีการ (มันใช้งานได้ดีกับความคิดที่แตกต่างกันของร่องรอย) แต่มันก็ทำให้ฉันรู้สึกเหมือนเป็นความสมดุลที่แปลกประหลาด

ฉันต่อสู้เพื่อดูว่า monad คืออะไรจริง ๆและแนวคิดทั่วไปมีประโยชน์อย่างไรในแอปพลิเคชัน (ทั้งในทางทฤษฎีและปฏิบัติ) มันคุ้มค่ากับความพยายามหรือไม่ผลที่ตามมาคืออะไร?

ดังนั้นคำถามนี้:

มีปัญหาที่เกิดขึ้นตามธรรมชาติ (ในแง่ของ CS) หรือไม่ซึ่งความคิดเชิงนามธรรมของพระสงฆ์สามารถนำไปใช้และช่วย (หรือเป็นเครื่องมือ) เพื่อให้ได้ผลลัพธ์ที่ต้องการ (ไม่ว่าจะด้วยวิธีใดก็ตาม


2
สถานะการเข้ารหัสในภาษาการเขียนโปรแกรมทำงานได้อย่างหมดจด? นี่เป็นปัญหา CS ที่เป็นธรรมชาติหรือไม่
Stéphane Gimenez

2
ปัญหาทั่วไปของการจัดการเอฟเฟ็กต์ในภาษาที่ใช้งานได้เป็นตัวอย่างที่ฉันเห็นมากที่สุด: สำหรับทฤษฎีแล้ว monads สำหรับเอฟเฟกต์นั้นเซ็กซี่และสำหรับการฝึกปฏิบัติ IO monad ของ Haskell นั้นมีประโยชน์มาก
jmad

และอะไรจะเป็นข้อได้เปรียบเมื่อเปรียบเทียบกับความหมายคลาสสิกที่ค่อนข้างเบา FP monads เป็นเช่นเดียวกับในทฤษฎีหมวดหมู่หรือไม่ คำถามตามคำถาม
กราฟิลส์

ดูคำถามนี้ใน cstheory.SEสำหรับคำถามทั่วไปเพิ่มเติมหลังจากการใช้ทฤษฎีหมวดหมู่
ราฟาเอล

คำตอบ:


6

การถามว่าการเกิด monad นั้นเป็นเรื่องธรรมชาติหรือไม่นั้นคล้ายกับการถามว่ากลุ่ม (ในแง่ของทฤษฎีกลุ่ม) นั้นเป็นเรื่องธรรมชาติหรือไม่ เมื่อคุณทำอะไรบางอย่างที่เป็นทางการในกรณีนี้ในฐานะผู้ทำ endofunctor มันก็สอดคล้องกับหลักการของการเป็น monad หรือไม่ ถ้ามันเป็นไปตามความจริงแล้วสิ่งหนึ่งจะได้รับเครื่องจักรทางเทคนิคมากมายฟรี

กระดาษของ Moggi แนวคิดเกี่ยวกับการคำนวณและ monads นั้นแทบจะเป็นข้อตกลง: monads นั้นเป็นธรรมชาติอย่างไม่น่าเชื่อและมีประโยชน์สำหรับการอธิบายผลการคำนวณด้วยวิธีการที่เป็นเอกภาพ Wadlerและคนอื่น ๆ แปลความคิดเหล่านี้เพื่อจัดการกับผลการคำนวณในภาษาการเขียนโปรแกรมการทำงานโดยใช้การเชื่อมต่อที่ functor เป็นตัวสร้างประเภทข้อมูล นี่เป็นการเพิ่มไอซิ่งบนเค้ก FP monads อนุญาตให้ทำการรักษาผลการคำนวณเช่น IO ซึ่งจะผิดธรรมชาติอย่างยิ่งหากไม่มีพวกเขา Monads ได้สร้างแรงบันดาลใจในเรื่องความคิดที่เป็นประโยชน์เช่นลูกศรและสำนวนซึ่งมีประโยชน์มากสำหรับการจัดโครงสร้างโปรแกรมการทำงาน ดูลิงค์ Wadler สำหรับการอ้างอิง FP monads เป็นสิ่งเดียวกับทฤษฎีหมวดหมู่ monads ในแง่ที่ว่าสำหรับ FP monad ในการทำงานสมการเดียวกันต้องถือ --- คอมไพเลอร์อาศัยเหล่านี้ โดยทั่วไปการนำเสนอของ Monad นั้นแตกต่างกันไป (การดำเนินการและสมการที่แตกต่างกัน แต่เท่าเทียมกัน) แต่นี่เป็นความแตกต่างเพียงเล็กน้อย

งานจำนวนมหาศาลของBart Jacobs ที่จะใช้ แต่ตัวอย่างหนึ่งใช้พระ งานจำนวนมากเกิดจาก coalgebra ซึ่งเป็นทฤษฎีทั่วไปของระบบ หนึ่งในผู้มีส่วนร่วมในพื้นที่ของจาคอบส์คือการพัฒนาความคิดทั่วไปเกี่ยวกับความหมายของร่องรอยสำหรับระบบ (อธิบายว่าเป็นถ่านหิน) บนพื้นฐานของพระ หนึ่งอาจโต้แย้งว่าความคิดของความหมายของร่องรอยเป็นธรรมชาติ: ความหมายของระบบคืออะไร? รายการของการกระทำที่สามารถสังเกตได้!

วิธีหนึ่งที่จะเข้าใจ monads คือการโปรแกรมแรกใน Haskell โดยใช้ monads จากนั้นหาหนึ่งในบทแนะนำที่ดีมากมายที่มีให้ (ผ่าน Google) เริ่มจากมุมการเขียนโปรแกรมจากนั้นย้ายไปที่ด้านทฤษฎีเริ่มต้นด้วยทฤษฎีหมวดหมู่พื้นฐานบางอย่าง

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