Tipps zum Golfen in OCaml

9

Inspiriert von der Auswahl anderer 'Tipps zum Golfen in der Sprache xyz'. Bitte schlagen Sie wie gewohnt nur Tipps vor, die spezifisch für OCaml sind und nicht generell programmieren. Ein Tipp pro Antwort bitte.

vereiste Variablen
quelle
1
Stört es Sie, wenn ich ein paar offensichtliche Tipps hinzufüge?
Édouard

Antworten:

3

Verwenden Sie Funktionen anstelle von Übereinstimmungen

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

ist kürzer als

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

Verwenden Sie niemals begin […] end

Diese:

begin […] end 

ist immer gleichbedeutend damit:

([…])
Édouard
quelle
1

Definieren Sie mehrere Variablen oder Funktionen gleichzeitig

Dank Tupeln können Sie mehrere Variablen gleichzeitig definieren. Und da Funktionen erstklassige Bürger sind…:

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

Sie können jedoch nicht schreiben:

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

Fehler: Ungebundener Wert f

Leider können Sie das Problem nicht vermeiden, indem Sie Folgendes verwenden rec:

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

Fehler: Nur Variablen sind als linke Seite von zulässig let rec

Édouard
quelle
1

Exploit curryied Funktionen

Funktionen in OCaml sind curryied. Es kann manchmal nützlich sein, diese Tatsache auszunutzen.

let n y=f x y

kann geschrieben werden

let n=f x

Wenn Sie arithmetische Operationen benötigen, können Sie diese mit Klammern umgeben, damit sie sich wie Standard-Präfixfunktionen verhalten. (+), (-), ...

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

- : int = 4

Édouard
quelle