papet, δίκιο έχεις, ο τύπος number μπορεί να αποφευχθεί αν οι αριθμοί θεωρούνται αρχικά integer με stricttype=false. Τα έγραψα βιαστικά γιατί έφευγα για σχολείο.
Στάθη, το
β <- α / "αλφαριθμητικό"
ΔΕΝ είναι απαραίτητο να χτυπήσει εξ' αρχής λάθος μεταγλώττισης. Μπορεί να το χτυπήσει αργότερα όταν πάει να εκτελέσει τη συγκεκριμένη γραμμή. Έτσι θα είναι και συνεπής με τη θεωρία του βιβλίου, που λέει ότι οι διερμηνευτές μεταφράζουν το πρόγραμμα ανά γραμμή (ας μην επεκταθώ παραπέρα γιατί έχω πολλά να πω για τη θεωρία!

). Φυσικά έτσι που το έχεις σχεδιάσει το β <- α / / θα χτυπήσει συντακτικό λάθος εξ' αρχής αφού το δεύτερο / δεν είναι έκφραση.
Για παράδειγμα,
Αν 1 = 2 τότε β <- α / "αλφαριθμητικό"
Εμφάνισε "Η παραπάνω ανάθεση δεν πρόκειται να εκτελεστεί ποτέ, επομένως ένας διερμηνευτής μπορεί κάλλιστα να εκτελέσει τον αλγόριθμο"
Βασικά προτείνω να υπάρχουν οι εξής επιλογές κάπου στο interface:
( ) Να μην επιτρέπονται αλλαγές στον τύπο των μεταβλητών και να σταματάει η εκτέλεση
(*) Να επιτρέπονται αλλαγές στον τύπο των μεταβλητών και να εμφανίζεται warning
( ) Να επιτρέπονται αλλαγές στον τύπο των μεταβλητών και να μην εμφανίζεται warning
και φυσικά όταν λέω αλλαγή τύπου, εννοώ αφού έχει ξεκαθαριστεί ο τύπος της (stricttype = true). Δηλαδή το α <- 1 και μετά α <- 1.2 δεν θεωρείται αλλαγή τύπου.
Γράφω κάποια παραδείγματα παρακάτω. Όταν λέω "να βγάλει warning", αυτό εξαρτάται από την επιλογή του interface, δηλαδή μπορεί είτε να σταματήσει, είτε να εμφανίσει warning, είτε να μην εμφανίσει τίποτα.
Παραδείγματα:
α <- 1.1
α <- 2
ι <- α div 2
Θεωρώ ότι πρέπει να βγάλει warning, το div δεν ορίζεται για πραγματικούς. Αν ήθελε div δεν θα έπρεπε ποτέ να του αναθέσει πραγματική τιμή.
α <- 6.2
β <- α div 2
Επίσης warning αλλά αν ο χρήστης έχει επιλέξει να μη σταματάει η εκτέλεση τότε το β να γίνει 3 και να συνεχίσει.
α <- "Κώστας"
α <- 3
Επίσης προτείνω σκέτο warning και να επιτρέπεται η συνέχιση της εκτέλεσης με τη σχετική επιλογή του interface.
Εφόσον λέμε ότι δεν έχουμε τύπους, δεν έχουμε τύπους, τελεία. Στο χέρι του προγραμματιστή είναι να κάνει ότι θέλει. Δεν είναι περίεργο, αρκετές γλώσσες το επιτρέπουν.
Τα ίδια περίπου θα αντιμετωπίσεις και στη Διάβασε, οπότε ο στατικός έλεγχος δε βοηθάει και πολύ.
Ένα πιο σοβαρό είναι οι πράξεις:
α <- "6.2"
β <- α div 2
ή
α <- "Κώστας"
β <- α div 2
Φυσικά θα βγάλεις warning, θα σταματήσει όμως η εκτέλεση ή όχι; Εδώ μερικές γλώσσες κάνουν το β στην πρώτη περίπτωση 3 και στη δεύτερη 0, άλλες το κάνουν NaN (Not A Number) και άλλες δεν το επιτρέπουν και σταματάνε την εκτέλεση.
Προτείνω σε αυτήν την περίπτωση να σταματάει η εκτέλεση, γιατί δεν μπορώ να φανταστώ μαθητή που να θέλει επίτηδες να κάνει κάτι τέτοιο.
Ιδέες ρίχνω, εσύ διαλέγεις...