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ź.
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ź.
Odpowiedzi:
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
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