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.