กลับไปหน้าบทความ

อ่าน 2 นาที

แคลคูลัสรูปแบบ

แคลคูลัสรูปแบบ (Pattern calculus) ใช้ การจับคู่รูปแบบ (pattern matching) ในรูป แบบทั่วไปเป็นพื้นฐานในการคำนวณทั้งหมด เช่นเดียวกับแคลคูลัสแลมบ์ดา (Lambda calculus) มันสนับสนุนการ...

แคลคูลัสรูปแบบ

แคลคูลัสรูปแบบ (Pattern calculus) ใช้ การจับคู่รูปแบบ (pattern matching) ในรูป แบบทั่วไปเป็นพื้นฐานในการคำนวณทั้งหมด เช่นเดียวกับแคลคูลัสแลมบ์ดา (Lambda calculus) มันสนับสนุนการ ประเมินค่าฟังก์ชันอย่างสม่ำเสมอนอกจากนี้ยังอนุญาตให้ส่งฟังก์ชันเป็นอาร์กิวเมนต์และส่งคืนเป็นผลลัพธ์ได้ ยิ่งไปกว่านั้น แคลคูลัสรูปแบบยังสนับสนุนการเข้าถึงโครงสร้างภายในของอาร์กิวเมนต์อย่างสม่ำเสมอ ไม่ว่าจะเป็นคู่ (pairs) รายการ ( lists)หรือต้นไม้ (trees ) และยังอนุญาตให้ส่งรูปแบบ (patterns) เป็นอาร์กิวเมนต์และส่งคืนเป็นผลลัพธ์ได้ การเข้าถึงอย่างสม่ำเสมอแสดงให้เห็นได้จากฟังก์ชันจับคู่รูปแบบsizeที่คำนวณขนาดของโครงสร้างข้อมูล ใดๆ ในสัญลักษณ์ของภาษาโปรแกรมbondi ฟังก์ชัน นี้แสดงด้วยฟังก์ชันเรียกซ้ำ (recursive function)

let rec size = | x y -> ( size x ) + ( size y ) | x -> 1

กรณีที่สอง หรือกรณีเริ่มต้นx -> 1จะจับคู่รูปแบบx กับอาร์กิวเมนต์และส่งคืนค่า1กรณีนี้จะใช้ก็ต่อเมื่อการจับคู่ล้มเหลวในกรณีแรกเท่านั้น กรณีแรก หรือกรณีพิเศษจะจับคู่กับโครงสร้างข้อมูลแบบผสม ใดๆ เช่น รายการที่ไม่ว่างเปล่า หรือคู่ข้อมูล การจับคู่จะผูกxกับส่วนประกอบด้านซ้ายและyส่วนประกอบด้านขวา จากนั้นส่วนเนื้อหาของกรณีจะนำขนาดของส่วนประกอบเหล่านี้มารวมกัน

เทคนิคที่คล้ายกันนี้จะสร้างคำสั่งค้นหาและอัปเดตแบบทั่วไป การรวมการเรียกซ้ำและการแยกส่วนในลักษณะนี้จะทำให้เกิดความหลากหลายของเส้นทาง (path polymorphism )

ความสามารถในการส่งผ่านรูปแบบเป็นพารามิเตอร์ ( รูปแบบโพลีมอร์ฟิซึม ) แสดงให้เห็นได้จากการกำหนดตัวกำจัดทั่วไป สมมติว่ามีตัวสร้างLeafสำหรับสร้างใบของต้นไม้ และCountสำหรับแปลงตัวเลขเป็นตัวนับ ตัวกำจัดที่สอดคล้องกันจะเป็นดังนี้

elimLeaf = | Leaf y -> y elimCount = | Count y -> y

ตัวอย่างเช่นelimLeaf (Leaf 3)มีค่าเท่ากับ3เช่นเดียวelimCount (Count 3)กับ

ตัวอย่างเหล่านี้สามารถสร้างขึ้นได้โดยการใช้ตัวกำจัดทั่วไป elimกับตัวสร้างที่เกี่ยวข้อง โดยตัวกำจัดทั่วไปนี้ถูกกำหนดโดย

elim = | x -> | { y } x y -> y

ตอนนี้elim Leafมีค่าเท่ากับ| {y} Leaf y -> yซึ่งเทียบเท่ากับelimLeafนอกจากนี้ ยังelim Countเทียบเท่าelimCountกับ

โดยทั่วไป วงเล็บปีกกา{}จะบรรจุตัวแปรที่ถูกผูกไว้ของรูปแบบ ดังนั้น จึงxเป็นตัวแปรอิสระ และ จะถูกผูก ไว้ yใน| {y} x y -> y

  • สำเนาสำรองของลิงก์ด้านล่าง (ซึ่งปัจจุบันไม่สามารถใช้งานได้แล้ว)
  • Jay, C. Barry (พฤศจิกายน 2004). "แคลคูลัสรูปแบบ" . ACM Trans. Program. Lang. Syst . 26 (6): 911– 937. doi : 10.1145/1034774.1034775 . S2CID  14252624 .— เอกสารต้นฉบับ แต่ไม่ใช่ฉบับทั่วไปที่สุด
  • Jay, B.; Kesner, D. (2006). "Pure Pattern Calculus". ใน Sestoft, P. (บรรณาธิการ). Programming Languages ​​and Systems. ESOP 2006. Lecture Notes in Computer Science. Vol. 3924. Springer. หน้า  100–114 . doi : 10.1007/11693024_8 . hdl : 10453/1684 . ISBN 978-3-540-33096-7.
  • เจย์, แบร์รี (2009). แคลคูลัสรูปแบบ: การคำนวณด้วยฟังก์ชันและโครงสร้าง . สปริงเกอร์. doi : 10.1007/978-3-540-89185-7 . ISBN 978-3-540-89185-7.
  • เว็บไซต์วิจัยภาษาโปรแกรมบอนดี
  • Given-Wilson, T.; Gorla, D.; Jay, B. (2010). "Concurrent Pattern Calculus". ใน Calude, CS; Sassone, V. (บรรณาธิการ). วิทยาศาสตร์คอมพิวเตอร์เชิงทฤษฎี. TCS 2010. IFIP Advances in Information and Communication Technology. เล่มที่ 323. Springer. doi : 10.1007/978-3-642-15240-5_18 . ISBN 978-3-642-15240-5.
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Pattern_calculus&oldid=1136513868 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ แคลคูลัสรูปแบบ

แคลคูลัสรูปแบบ (Pattern calculus) ใช้ การจับคู่รูปแบบ (pattern matching) ในรูป แบบทั่วไปเป็นพื้นฐานในการคำนวณทั้งหมด เช่นเดียวกับแคลคูลัสแลมบ์ดา (Lambda calculus) มันสนับสนุนการ...

ลิงก์ภายนอก

สำเนาสำรองของลิงก์ด้านล่าง (ซึ่งปัจจุบันไม่สามารถใช้งานได้แล้ว) Jay, C. Barry (พฤศจิกายน 2004). "แคลคูลัสรูปแบบ" . ACM Trans. Program. Lang. Syst . 26 (6): 911– 937. doi : 10.1145/1034774.1034775 . S2CID 14252624 .