Wskazówki dotyczące gry w golfa w OCaml


10

Inspirowany asortymentem innych „Porad do gry w golfa w języku xyz”. Jak zwykle, sugeruj tylko wskazówki, które są specyficzne dla OCaml i nie programują w ogóle. Poproszę jedną wskazówkę na odpowiedź.


1
Czy mógłbym dodać kilka oczywistych wskazówek?
Édouard

Odpowiedzi:


4

Używaj funkcji zamiast dopasowywać

let rec f=function[]->0|_::t->1+f t

jest krótszy niż

let rec f x=match x with[]->0|_::t->1+f t

3

Nigdy nie używaj początku […] końca

To:

begin […] end 

jest zawsze równoznaczne z tym:

([…])

2

Zdefiniuj kilka zmiennych lub funkcji jednocześnie

Dzięki krotkom możesz zdefiniować kilka zmiennych jednocześnie. A jako funkcje są pierwszorzędni obywatele…:

let f,g=(fun x->x+1),fun x->2*x

Nie możesz jednak napisać:

let f,g=(fun x->x+1),fun x->2*f x

Błąd: wartość niezwiązana f

Niestety nie można uniknąć tego problemu, używając rec:

let rec f,g=(fun x->x+1),fun x->2*f x

Błąd: dozwolone są tylko zmienne jako lewa strona let rec


2

Wykorzystaj funkcje curryied

Funkcje w OCaml są curry. Czasem warto wykorzystać ten fakt.

let n y=f x y

można napisać

let n=f x

Jeśli potrzebujesz operacji arytmetycznych, możesz otoczyć je nawiasami, aby działały jak standardowe funkcje prefiksów. (+),, (-)

let n=(+)1;;
n 3;;

- : int = 4

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.