Uma visão geral de como começar do zero com OCaml
O Exercism disponibiliza exercícios e feedback, mas pode ser difícil de começar para quem está a aprender OCaml pela primeira vez. Estes recursos ajudam-te a dar os primeiros passos:
A documentação do OCaml está repartida por vários projetos e pode ser difícil de encontrar, porque existe o que às vezes se chama de biblioteca padrão (a biblioteca bastante minimalista que vem com o compilador) e uma biblioteca Core (um projeto separado da Jane Street que pretende oferecer uma biblioteca padrão mais completa e consistente).
Para complicar, a biblioteca padrão é por vezes designada biblioteca core (embora raramente biblioteca Core).
A biblioteca Core da Jane Street é necessária para alguns exercícios, mas pode ser útil para todos. Está dividida em três, Base, Core_kernel e Core, cada uma a estender a anterior.
A Base é tudo o que precisas para a maioria dos exercícios, mas para alguns (por exemplo, ao usar datas, é preciso a Core_kernel).
Para usar a Core, coloca open Base ou open Core_kernel no topo do teu código.
Por exemplo, em vez de List, obténs um List alternativo vindo do Base.(https://ocaml.janestreet.com/ocaml-core/latest/doc/base/Base/List/) (open Base torna-o disponível com o nome List).
Há diferenças subtis e nem tão subtis assim entre o módulo List da biblioteca padrão e o List da Core. Por exemplo, na biblioteca padrão, List.for_all tem a assinatura
val for_all : ('a -> bool) -> 'a list -> bool
enquanto que na biblioteca Core tem
val for_all : 'a t -> f:('a -> bool) -> bool
A consequência é que, para verificar se todos os números de uma lista são menores que 10, tens de escrever o seguinte com o módulo List da biblioteca core do compilador:
List.for_all (fun x -> x < 10) list
e com o módulo List da Core tens de escrever:
List.for_all list (fun x -> x < 10)
ou (de preferência):
List.for_all ~f:(fun x -> x < 10) list
Um conselho: concentra-te na biblioteca Core e ignora a biblioteca padrão, a menos que não consigas mesmo encontrar na Core o que precisas.