Áttekintés arról, hogyan kezdj el OCaml-t tanulni a nulláról
Az Exercism feladatokat és visszajelzéseket kínál, de azoknak, akik először tanulnak OCaml-t, nehéz lehet belevágni. Ezek az anyagok segíthetnek az indulásban:
Az OCaml dokumentációja több projekt között oszlik el, ezért nehéz lehet megtalálni, mert van az, amit néha standard könyvtárnak neveznek (a fordítóval érkező meglehetősen szűkös könyvtár), és van egy Core könyvtár (a Jane Street külön projektje, amelynek célja egy teljesebb és egységesebb standard könyvtár nyújtása).
Zavarba ejtő módon a standard könyvtárat néha core könyvtárnak is nevezik (bár ritkán Core könyvtárnak).
A Jane Street Core könyvtára néhány feladathoz kötelező, de mindegyikhez hasznos lehet. Három részre tagolódik: Base, Core_kernel és Core, amelyek mindegyike az előzőt bővíti. A legtöbb feladathoz elég a Base, de néhányhoz (például a dátumok használatához a Core_kernel kell). Ha a Core-t szeretnéd használni, írd a kódod elejére az open Base vagy az open Core_kernel sort.
Például a List helyett a Base-ból kapsz egy árnyékolt változatot (https://ocaml.janestreet.com/ocaml-core/latest/doc/base/Base/List/) (az open Base teszi elérhetővé ezt List néven).
Van néhány finom és kevésbé finom különbség a standard könyvtár List modulja és a Core List modulja között. A standard könyvtárban például a List.for_all szignatúrája
val for_all : ('a -> bool) -> 'a list -> bool
míg a Core könyvtárban ez:
val for_all : 'a t -> f:('a -> bool) -> bool
Ebből az következik, hogy ha ellenőrizni akarod, hogy egy listában minden szám kisebb-e 10-nél, a fordító core List moduljával a következőt kell írnod:
List.for_all (fun x -> x < 10) list
a Core List modullal pedig ezt kell írnod:
List.for_all list (fun x -> x < 10)
vagy (ez a jobb):
List.for_all ~f:(fun x -> x < 10) list
Egy tanács: összpontosíts a Core könyvtárra, és hagyd figyelmen kívül a standard könyvtárat, kivéve, ha valóban nem találod meg a Core-ban, amire szükséged van.