Μια επισκόπηση του πώς να ξεκινήσεις από το μηδέν με την OCaml
Το Exercism προσφέρει ασκήσεις και ανατροφοδότηση, αλλά μπορεί να είναι δύσκολο να ξεκινήσεις αν μαθαίνεις OCaml για πρώτη φορά. Οι παρακάτω πόροι μπορούν να σε βοηθήσουν να κάνεις την αρχή:
Η τεκμηρίωση του OCaml είναι σκορπισμένη σε πολλά project και μπορεί να είναι δύσκολο να τη βρεις, γιατί υπάρχει αυτό που μερικές φορές ονομάζεται τυπική βιβλιοθήκη (η αρκετά λιτή βιβλιοθήκη που έρχεται μαζί με τον μεταγλωττιστή) και μια βιβλιοθήκη Core (ένα ξεχωριστό project της Jane Street που στοχεύει να προσφέρει μια πιο πλήρη και συνεπή τυπική βιβλιοθήκη).
Μπερδευτικά, η τυπική βιβλιοθήκη αναφέρεται μερικές φορές ως core βιβλιοθήκη (αν και σπάνια ως βιβλιοθήκη Core).
Η βιβλιοθήκη Core της Jane Street απαιτείται για λίγες ασκήσεις, αλλά μπορεί να φανεί χρήσιμη για όλες. Χωρίζεται σε τρία μέρη, τα Base, Core_kernel και Core, καθένα από τα οποία επεκτείνει το προηγούμενο.
Το Base είναι ό,τι χρειάζεσαι για τις περισσότερες ασκήσεις, αλλά για λίγες (για παράδειγμα, όταν χρησιμοποιείς ημερομηνίες) χρειάζεται το Core_kernel.
Για να χρησιμοποιήσεις το Core, βάλε το open Base ή το open Core_kernel στην αρχή του κώδικά σου.
Για παράδειγμα, αντί για List παίρνεις μια επισκίαση από το Base.(https://ocaml.janestreet.com/ocaml-core/latest/doc/base/Base/List/) (το open Base το κάνει διαθέσιμο με το όνομα List).
Υπάρχουν μερικές λεπτές και όχι και τόσο λεπτές διαφορές μεταξύ του module List της τυπικής βιβλιοθήκης και του List του Core, για παράδειγμα στην τυπική βιβλιοθήκη το List.for_all έχει υπογραφή
val for_all : ('a -> bool) -> 'a list -> bool
ενώ στη βιβλιοθήκη Core έχει
val for_all : 'a t -> f:('a -> bool) -> bool
Η συνέπεια είναι ότι για να ελέγξεις αν όλοι οι αριθμοί σε μια λίστα είναι μικρότεροι του 10, πρέπει να γράψεις το εξής με το core module List του μεταγλωττιστή:
List.for_all (fun x -> x < 10) list
και με το module List του Core πρέπει να γράψεις:
List.for_all list (fun x -> x < 10)
ή (κατά προτίμηση):
List.for_all ~f:(fun x -> x < 10) list
Μια συμβουλή: επικεντρώσου στη βιβλιοθήκη Core και αγνόησε την τυπική βιβλιοθήκη, εκτός αν πραγματικά δεν μπορείς να βρεις αυτό που χρειάζεσαι στο Core.