Огляд того, як почати з нуля з OCaml
Exercism надає вправи та зворотний звʼязок, але тим, хто вперше вивчає OCaml, буває важко одразу зануритися в роботу. Ці ресурси допоможуть почати:
Документація OCaml розкидана по кількох проєктах, і її буває важко знайти, бо існує те, що іноді називають стандартною бібліотекою (досить мінімальна бібліотека, що постачається з компілятором), і бібліотека Core (окремий проєкт від Jane Street, який має на меті надати повнішу й послідовнішу стандартну бібліотеку).
Додає плутанини те, що стандартну бібліотеку іноді називають основною бібліотекою (хоча рідко її називають бібліотекою 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).
Між модулем 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, з модулем List зі стандартної бібліотеки компілятора треба написати так:
List.for_all (fun x -> x < 10) list
а з модулем List з Core треба написати:
List.for_all list (fun x -> x < 10)
або (краще):
List.for_all ~f:(fun x -> x < 10) list
Одна порада: зосередьтеся на бібліотеці Core і не зважайте на стандартну бібліотеку, якщо тільки ви справді не можете знайти в Core те, що потрібно.