DedSec Project

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

idris_2 — συγκεντρωτικός οδηγός Idris 2 Βασική ιδέα Η Idris 2 χρησιμοποιεί dependent types όπου τιμές εμφανίζονται στους τύπους και περιγράφουν ισχυρότερα invariants. Μικρό εκπαιδευτικό…

Idris 2

Βασική ιδέα

Η Idris 2 χρησιμοποιεί dependent types όπου τιμές εμφανίζονται στους τύπους και περιγράφουν ισχυρότερα invariants.

Μικρό εκπαιδευτικό απόσπασμα

double : Nat -> Nat
double n = n + n

Άσκηση βασισμένη στη συγκεκριμένη συμπεριφορά

Διάβασε τον τύπο πριν από το double 3 και σύγκρινε Nat με μη ελεγμένο εξωτερικό string.

Διάγνωση και όρια

Μια απόδειξη τύπου ισχύει αφού ελεγχθεί η είσοδος και μετατραπεί στον σωστό τύπο.

Κάνε την άσκηση με πραγματικά δοκιμαστικά δεδομένα και με έκδοση Idris_2 που ταιριάζει στον κώδικα. Σημείωσε μία αρχική πρόβλεψη και την πραγματική έξοδο. Για περίπλοκο ή μη διαθέσιμο runtime, παρουσίασε τη στατική ανάλυση ως τέτοια, όχι ως επιτυχημένη εκτέλεση. Δοκίμασε ξεχωριστά την κανονική περίπτωση και μία οριακή τιμή, χωρίς πραγματικά προσωπικά ή παραγωγικά δεδομένα.

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

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

module Hello
main : IO ()
main = putStrLn "Hello, Ada!"

Περιβάλλον: idris2 Hello.idr -x main.. Κράτησε αντίγραφο του αρχικού κώδικα και σημείωσε έκδοση εργαλείου. Ξεχώρισε αν η εκτέλεση επιστρέφει τιμή, εμφανίζει κείμενο ή αλλάζει state. Για τις πρώτες δοκιμές χρησιμοποίησε απομονωμένο περιβάλλον, όχι πραγματικούς λογαριασμούς ή δεδομένα.

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

Όρισε head για μη κενό length-indexed vector και έλεγξε compile failure σε κενό vector. Σύγκρινε dependent length με runtime λίστα.

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

Idris 2 διαφέρει από Idris 1· χρησιμοποίησε κατάλληλο compiler και μην κρύβεις τύπους πίσω από holes.