Προηγούμενη Πάνω Επίπεδο Επόμενη Περιεχόμενα
Επόμενη: Ανάγνωση Λογικών Προγραμμάτων Πάνω Επίπεδο: Λογικός Προγραμματισμός Προηγούμενη: Λογικός Προγραμματισμός

5.1 Σύνταξη

Η σύνταξη των λογικών προγραμμάτων ακολουθεί τη σύνταξη της κατηγορηματικής λογικής πρώτης τάξης.

Ας δούμε, για παράδειγμα, ένα λογικό πρόγραμμα που αναπαριστά οικογενειακές σχέσεις:


verbatimtab433

Το κατηγόρημα father/2 δηλώνει ότι ο X είναι πατέρας του Y. Μια παρόμοια σχέση ορίζεται από το κατηγόρημα mother/2. Και τα δύο αυτά κατηγορήματα ορίζονται από σύνολα γεγονότων. Από την άλλη μεριά, το κατηγόρημα parent/2 ορίζεται από δύο κανόνες και μας λέει ότι ο X είναι γονιός του Y, ή αν ο X είναι πατέρας του Y, ή αν η X είναι μητέρα του Y. Η απάντηση της ερώτησης (ή στόχου) ?- parent(Who, danae) είναι το σύνολο των αντικαταστάσεων {Who/john, Who/chrysa}.

Οι προηγούμενοι κανόνες ορίζουν νέες σχέσεις με τη βοήθεια άλλων. Ωστόσο, η πολύ γνωστή έννοια της αναδρομής (recursion), μπορεί να χρησιμοποιηθεί στον ορισμό κανόνων, για να ορίσει σχέσεις με τη βοήθεια των εαυτών τους. Οι αναδρομικοί κανόνες αυξάνουν σημαντικά την εκφραστική δύναμη του λογικού προγραμματισμού. Για παράδειγμα, αν θέλουμε να ορίσουμε τη σχέση ancestor/2 (πρόγονος) με χρήση της σχέσης parent/2, το πιθανότερο είναι να χρειαστεί να γράψουμε ένα άπειρο σύνολο κανόνων της μορφής


verbatimtab440
κ.λ.π.

Με χρήση, όμως, αναδρομικού ορισμού, γράφουμεtex2html_wrap_inline1398


verbatimtab445


Εργαστήριο Γλωσσών Προγραμματισμού και Τεχνολογίας Λογισμικού
Mon Apr 5 16:25:43 EEST 1999