DedSec Project

mercury — συγκεντρωτικός οδηγός — DedSec Project

mercury — συγκεντρωτικός οδηγός Mercury Συνήθης χρήση: Λογικός προγραμματισμός. Προτεινόμενη επέκταση αρχείου: .m . Εκτέλεση / περιβάλλον: mmc --make hello (εργαλεία Mercury). Αρχικό…

Mercury

Συνήθης χρήση: Λογικός προγραμματισμός.

Προτεινόμενη επέκταση αρχείου: .m.

Εκτέλεση / περιβάλλον: mmc --make hello (εργαλεία Mercury).

Αρχικό παράδειγμα

:- module hello.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
main(!IO) :- io.write_string("Hello, Ada!\n", !IO).

Πώς διαβάζεται

Λογική γλώσσα με αυστηρούς τύπους και δηλώσεις τρόπου.

Συνηθισμένο λάθος

Λογική γλώσσα με αυστηρούς τύπους και δηλώσεις τρόπου. Έλεγξε την έκδοση διερμηνευτή/μεταγλωττιστή και μην εκλαμβάνεις το δείγμα ως έτοιμη εφαρμογή παραγωγής.

Mercury — Αναλυτικός οδηγός εξάσκησης

Μικρή αφετηρία πηγαίου κώδικα

:- module hello.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
main(!IO) :- io.write_string("Hello, Ada!\n", !IO).

Περιβάλλον: mmc --make hello (Mercury toolchain).. Κράτησε αντίγραφο του αρχικού κώδικα και σημείωσε έκδοση εργαλείου. Ξεχώρισε αν η εκτέλεση επιστρέφει τιμή, εμφανίζει κείμενο ή αλλάζει state. Για τις πρώτες δοκιμές χρησιμοποίησε απομονωμένο περιβάλλον, όχι πραγματικούς λογαριασμούς ή δεδομένα.

Ανάλυση του ιδιαίτερου μηχανισμού

Φτιάξε deterministic predicate και multi-solution predicate πάνω σε μικρή relation. Δήλωσε modes/determinism και εντόπισε λάθος declaration μέσω compiler.

Διάγνωση κρίσιμου ορίου

Η Mercury θεωρεί determinism και instantiation μέρος του interface. Η σύνταξη Prolog μοιάζει αλλά δεν μεταφέρεται αυτούσια.

Mercury — Διαδρομή ουσιαστικής εξάσκησης

Πρακτικές εργασίες

  1. Όρισε σχέση γονέα/προγόνου στο κατάλληλο περιβάλλον.
  2. Δείξε πώς επιπλέον γεγονός αλλάζει το σύνολο αποτελεσμάτων.
  3. Εξήγησε τον τερματισμό και τις επιδράσεις της σειράς αναζήτησης.

Ερωτήσεις ουσίας