f_sharp — συγκεντρωτικός οδηγός — DedSec Project
f_sharp — συγκεντρωτικός οδηγός F Μοντέλο λειτουργίας Η F ανήκει στην οικογένεια ML πάνω σε .NET με type inference, immutable values και discriminated unions. Παράδειγμα Δοκίμασέ το με…
F#
Μοντέλο λειτουργίας
Η F# ανήκει στην οικογένεια ML πάνω σε .NET με type inference, immutable values και discriminated unions.
Παράδειγμα
let squares = [1; 2; 3] |> List.map (fun x -> x * x)
printfn "%A" squares
Δοκίμασέ το με νόημα
Παρακολούθησε τον pipe operator και σύγκρινε τις πράξεις σε list και array.
Σφάλμα που πρέπει να ξεχωρίσεις
Ο compiler ξεχωρίζει concrete collection types· C# List<T> δεν είναι το ίδιο με F# list.
Για να κρίνεις την άσκηση, κατέγραψε την αρχική είσοδο, την πρόβλεψη και την παρατήρηση σε πραγματικό, συμβατό περιβάλλον F_Sharp. Δώσε ξεχωριστό παράδειγμα όπου αλλάζει μόνο μία μεταβλητή ή ένα όρισμα. Αν εργάζεσαι χωρίς την αναγκαία εφαρμογή, μελέτησε τη σύνταξη ως παράδειγμα και μην παρουσιάζεις το κείμενο ως εκτελεσμένο test.
F_Sharp — Αναλυτικός οδηγός εξάσκησης
Σαφή αποτελέσματα αντί για αυθαίρετο μηδέν
Η F# χρησιμοποιεί το .NET runtime αλλά διαθέτει δική της σύνταξη και τύπους δεδομένων. Στο parse.fsx γράψε:
let parseScore (text: string) =
match System.Int32.TryParse(text) with
| true, score -> Some score
| false, _ -> None
assert (parseScore "12" = Some 12)
assert (parseScore "bad" = None)
assert (parseScore "0" = Some 0)
printfn "%A" (parseScore "-3")
Με κατάλληλο SDK εκτέλεσε dotnet fsi parse.fsx. Προβλέπεται Some -3. Η Some σημαίνει ότι υπάρχει τιμή, ενώ η None σημαίνει αποτυχία parsing. Το πραγματικό μηδέν είναι Some 0 και δεν πρέπει να μπερδεύεται με άγνωστα δεδομένα. Κατάγραψε έκδοση .NET/F# για να αναπαράγεις τις παρατηρήσεις.
Σωστός τύπος, λάθος επιχειρησιακή τιμή
Η -3 είναι νόμιμος ακέραιος για τον parser αλλά μπορεί να απαγορεύεται για βαθμολογία. Σχεδίασε δεύτερη συνάρτηση που επιστρέφει Result<int,string>, με Ok στην έγκυρη τιμή και Error για μη αριθμό ή αρνητική βαθμολογία. Έτσι ο καλών μπορεί να χειριστεί το πρόβλημα χωρίς να βασίζεται σε γενική εξαίρεση.
Ελεγχόμενη ασυμφωνία τύπων
Άλλαξε προσωρινά το επιτυχημένο αποτέλεσμα σε Some "twelve". Σύγκρινε τον τύπο που συμπεραίνει ο compiler με αυτόν της αρχικής συνάρτησης. Ο μετέπειτα έλεγχος έναντι Some 12 πρέπει να αποκαλύψει ασυμβατότητα. Κράτησε το πραγματικό διαγνωστικό μήνυμα και μην υποθέτεις συγκεκριμένη διατύπωση μεταξύ εκδόσεων.
Ανεξάρτητη επέκταση
Επεξεργάσου ["3"; "bad"; "0"; "-1"] με List.map και όρισε πολιτική για τα λάθη. Σύγκρινε με List.choose, που μπορεί να αφαιρεί τα None αλλά χάνει θέσεις από την αρχική λίστα. Δοκίμασε κενή λίστα και τεράστια αριθμητική συμβολοσειρά. Πηγή: https://learn.microsoft.com/dotnet/fsharp/
F_Sharp — Παραδείγματα πραγματικού κώδικα
Εκτέλεση των παραδειγμάτων
Τα παραδείγματα είναι μικρά και αυτοτελή. Χρησιμοποίησε τη σχετική εγκατεστημένη γλώσσα. Ενδεικτικά: dotnet fsi {file}. Μη συγχέεις τα ονόματα αρχείων με αυτόματη εγκατάσταση. Δούλεψε σε δοκιμαστικό φάκελο.