Μονάδες και Αβεβαιότητα
Έλεγχος μονάδων κατά τη μεταγλώττιση και διάδοση αβεβαιότητας GUM στο Sounio
Μονάδες και Αβεβαιότητα
Το Sounio έχει ενσωματωμένο έλεγχο μονάδων; Ναι. Οι φυσικές διαστάσεις ελέγχονται κατά τη μεταγλώττιση.
Πώς να διαδώσω την αβεβαιότητα μέτρησης; Χρησιμοποιήστε Knowledge<T> με διάδοση GUM (Guide to the Expression of Uncertainty in Measurement).
Διαστασιακή ανάλυση — έλεγχος μονάδων κατά τη μεταγλώττιση
Το Sounio ελέγχει τις φυσικές διαστάσεις σε επίπεδο τύπου. Η πρόσθεση μέτρων με δευτερόλεπτα είναι σφάλμα μεταγλώττισης.
fn main() with IO {
let distance: m = 100.0
let time: s = 9.58
// Αυτό μεταγλωττίζεται: m / s = m/s
let velocity = distance / time
println(velocity) // 10.438413
// Αυτό είναι ΣΦΑΛΜΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ:
// let wrong = distance + time
// error[E041]: unit mismatch
}
Επαληθευμένο παράδειγμα
Το πλήρες παράδειγμα διαστασιακής ασφάλειας βρίσκεται στο examples/showcase/type_safe_units.sio.
Διάδοση αβεβαιότητας — Knowledge<T> και GUM
Το Knowledge<T> αντιπροσωπεύει μια μετρημένη τιμή με την τυπική της αβεβαιότητα. Η αβεβαιότητα διαδίδεται μέσω των υπολογισμών ακολουθώντας το Guide to the Expression of Uncertainty in Measurement (JCGM 100:2008).
Επαληθευμένο παράδειγμα
Το πλήρες παράδειγμα διάδοσης GUM βρίσκεται στο examples/science/uncertainty_propagation.sio.
Κατάσταση και περιορισμοί
-
Μονάδες: Ο έλεγχος κατά τη μεταγλώττιση λειτουργεί.
-
Αβεβαιότητα (
Knowledge<T>): Η διάδοση GUM γιαf64,boolκαι struct types είναι υλοποιημένη. -
Μη υλοποιημένο:
Knowledge<f128>(KL-15). -
Αυτό είναι λογισμικό pre-1.0. Δείτε KNOWN_LIMITATIONS.md.