ตั้งแต่Prolog = Syntactic Unification + การโยงย้อนกลับ + REPL
ทั้งสามส่วนสามารถพบได้ในปัญญาประดิษฐ์: โครงสร้างและกลยุทธ์สำหรับการแก้ปัญหาที่ซับซ้อนโดย George F. Luger ในฉบับที่สี่ของหนังสือทั้งสามส่วนมีการใช้งานในLISPในส่วนที่ 15.8 การเขียนโปรแกรมลอจิกใน LISP เขายังใส่รหัสเดิมลงในหนังสือเล่มอื่นของเขาด้วย แต่ฉันไม่มีทั้งหมดที่จะสังเกตได้ที่นี่ สำหรับหนังสือของเขาที่สามารถพบได้ที่นี่
แหล่งอื่นที่มีทั้งหมดสามส่วนสามารถพบได้ในกระบวนทัศน์ของการเขียนโปรแกรมปัญญาประดิษฐ์: กรณีศึกษาใน Common LISPโดย Peter Norvig ดูบทที่ 11, การเขียนโปรแกรมลอจิกและ 12, การรวบรวมโปรแกรมลอจิก สำหรับหนังสือของเขาที่สามารถพบได้ที่นี่
อีกแหล่งหนึ่งคือโครงสร้างและการตีความของโปรแกรมคอมพิวเตอร์โดย Hal Abelson, Jerry Sussman และ Julie Sussman ดูหัวข้อ 4.4 การเขียนโปรแกรมลอจิก เว็บไซต์สำหรับหนังสือเล่มนี้คือที่นี่และรหัสสำหรับหนังสือเล่มนี้เป็นที่นี่
ไม่ใช่เรื่องแปลกที่จะค้นหาอัลกอริทึมการรวมกับการโยงกลับที่นำมาใช้ในหลาย ๆ แอปพลิเคชันถ้าคุณรู้ว่าจะมองที่ไหน มันเป็นที่แพร่หลายโดยเฉพาะอย่างยิ่งในประเภทอนุมานในคอมไพเลอร์ทำงาน การใช้การรวมคำหลักหรือเกิดขึ้นช่วยในการสังเกตฟังก์ชั่น นอกจากนี้การใช้งานส่วนใหญ่ใช้ยูนิฟสำหรับชื่อของฟังก์ชั่นการรวม
สำหรับ Prolog รุ่นหนึ่งให้ใช้ REPL น้อยกว่าทำใน OCaml ดูรหัสและแหล่งข้อมูลสำหรับ "คู่มือตรรกะเชิงปฏิบัติและการใช้เหตุผลอัตโนมัติ" - prolog.ml
แปลรหัสหนังสือไป F # สามารถพบได้ที่นี่ แปลรหัสหนังสือเพื่อ Haskell สามารถพบได้ที่นี่
ในแง่ของการค้นหารหัสอัลกอริทึมการรวมนั้นง่ายที่สุดในการค้นหาจากนั้นการใช้งานที่มีการผูกมัดด้านหลังฝังอยู่ในแอปพลิเคชัน การค้นหาการนำ Prolog ไปใช้งานได้อย่างสมบูรณ์ในภาษาที่ใช้งานได้ด้วย REPL นั้นยากที่สุด ส่วนใหญ่รหัสไม่ได้อยู่ในรูปแบบสำหรับใช้โดยตรงภายใน PROLOG; มันถูกปรับแต่งอย่างหนักเพื่อเพิ่มประสิทธิภาพดังนั้นคุณอาจพบรหัส แต่มันจะไม่คุ้มค่ากับราคาที่จะแซวชิ้นส่วนที่คุณต้องการ คำแนะนำของฉันคือการอ่านหนังสือของ Luger และสร้างมันขึ้นมาใหม่ในภาษาที่คุณเลือกแม้ว่าจะหมายถึงการติดตั้งและเรียนรู้ LISP และการแปลเพื่อทำเช่นนั้น
แก้ไข
เนื่องจากนี่เป็นคำถามที่ซ้ำกันจากStackOverflowและ OP เป็นของใหม่และในความคิดเห็นพูดว่า:
เพื่อให้บริบทเพิ่มเติมฉันพยายามใช้การอนุมานประเภท แต่คุณลักษณะที่สลับซับซ้อนในระบบประเภทของภาษาของฉัน (ประเภทที่ขึ้นอยู่กับประเภทการปรับแต่งการพิมพ์เชิงเส้นเพื่อตั้งชื่อสามัญน้อยกว่าสองสาม) ทำให้ฉันรู้สึกว่ามันจะ มีประโยชน์ในการอนุมานประเภทของฉันจากอัลกอริธึมที่ใช้ Prolog เพื่อให้ได้อัลกอริทึมทั่วไป ฉันจะทราบว่าฉันสอนตัวเองทั้งหมดดังนั้นความรู้ของฉันจึงขาดไปในหลาย ๆ ด้าน
ฉันจะขยายที่นี่ แต่ตระหนักถึง OP ควรถามคำถามใหม่
สำหรับสิ่งบทนำบางคนเห็นว่าการดำเนินการอนุมานชนิด
หนังสือที่ดีที่สุดที่ฉันรู้จักในเรื่องนี้คือประเภทและภาษาการเขียนโปรแกรมโดย Benjamin C. Pierce เว็บไซต์ของหนังสือเล่มนี้คือที่นี่ ทรัพยากรที่มีการเชื่อมโยงกับโค้ด OCaml เป็นที่นี่ และเพิ่งเริ่มต้น แต่การแปลส่วนใหญ่ที่สมบูรณ์ของการนี้เพื่อ F # เป็นที่นี่
ประเภทที่อ้างถึง: pg 462 ประเภทการปรับแต่ง: pg 207 ตรรกะเชิงเส้นและระบบพิมพ์: หน้า 109