Στη F#, καθετί που έχει τύπο και μπορεί να οριστεί ονομάζεται τιμή. Αυτό περιλαμβάνει τις τιμές Boolean (λογική τιμή), τους ακέραιους αριθμούς και τις λίστες, αλλά και τις συναρτήσεις. Οι ακέραιες τιμές ορίζονται ως ένα ή περισσότερα (συνεχόμενα) ψηφία και υποστηρίζουν τους προεπιλεγμένους μαθηματικούς τελεστές.
Η εκχώρηση μιας τιμής σε ένα όνομα αναφέρεται ως δέσμευση. Οι δεσμεύσεις είναι αμετάβλητες, κάτι που τις κάνει παρόμοιες με τις σταθερές σε άλλες γλώσσες. Οι δεσμεύσεις ορίζονται με τη λέξη-κλειδί let (έστω).
Καθώς η F# είναι μια στατικά τυποποιημένη γλώσσα, κάθε δέσμευση έχει έναν τύπο. Ο καθορισμός του τύπου μιας δέσμευσης είναι προαιρετικός για τις περισσότερες δεσμεύσεις, καθώς η εξαγωγή τύπων της F# μπορεί συνήθως να συμπεράνει τον τύπο με βάση την τιμή τους.
// Automatically inferred type
let fingers = 10
Οι συναρτήσεις είναι επίσης κανονικές δεσμεύσεις, αλλά με μία ή περισσότερες παραμέτρους. Μια συνάρτηση επιστρέφει αυτόματα την τελευταία έκφρασή της. Η εξαγωγή τύπων λειτουργεί επίσης για τις περισσότερες συναρτήσεις, αναλύοντας με ποιες τιμές καλείται η συνάρτηση και ποια τιμή επιστρέφει.
// Automatically inferred types for parameters and return type
let add x y = x + y
Η κλήση μιας συνάρτησης γίνεται γράφοντας το όνομά της και περνώντας ορίσματα για κάθε παράμετρο της συνάρτησης.
let five = add 2 3
Αν ο τύπος μιας δέσμευσης δεν μπορεί να συμπεραθεί, ο μεταγλωττιστής θα αναφέρει ένα σφάλμα. Για να το διορθώσεις, δήλωσε ρητά τον τύπο της δέσμευσης.
// Explicit type annotation
let fingers: int = 10
// Explicit type annotation (also for parameters)
let add (x: int) (y: int): int = x + y
Οι δεσμεύσεις στη F# μπορούν να χρησιμοποιηθούν μόνο αφού οριστούν. Η χρήση μιας δέσμευσης πριν οριστεί έχει ως αποτέλεσμα σφάλμα μεταγλώττισης.
// Compile error as the add binding has not yet been defined
// let seven = add 3 + 4
let add x y = x + y
Τα σημαντικά κενά χρησιμοποιούνται για τον καθορισμό της εμβέλειας, βάζοντας εσοχή στον κώδικα με κενά σε σχέση με τη γραμμή που δηλώνει τη δέσμευση. Η προεπιλεγμένη σύμβαση είναι να χρησιμοποιούνται τέσσερα κενά για την εσοχή.
let toes =
let left = 5
let right = 5
left + right
let multiplyPlusTwo x y =
let product = x * y
product + 2
// Trying to access the left, right or product bindings
// here would result in a compile error
Οι δεσμεύσεις της F# (στις οποίες περιλαμβάνονται και οι συναρτήσεις) οργανώνονται συνήθως σε αρθρώματα. Ένα άρθρωμα ομαδοποιεί σχετική λειτουργικότητα και ορίζεται με τη λέξη-κλειδί module. Ο ορισμός του αρθρώματος πρέπει να προηγείται των δεσμεύσεών του:
module Calculator
let pi = 3.14
let add x y = x + y
Η F# υποστηρίζει δύο τύπους σχολίων. Τα σχόλια μονής γραμμής ξεκινούν με // και τα σχόλια πολλαπλών γραμμών τοποθετούνται ανάμεσα σε (* και *).