Tips untuk bermain golf di OCaml

10

Terinspirasi dari bermacam-macam 'Tips untuk bermain golf dalam bahasa xyz'. Seperti biasa, harap hanya menyarankan kiat yang khusus untuk OCaml dan bukan pemrograman secara umum. Tolong, satu tip per jawaban.

icedvariables
sumber
1
Keberatan jika saya menambahkan beberapa tips yang jelas?
Édouard

Jawaban:

4

Gunakan fungsi, bukan pertandingan

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

lebih pendek dari

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

Jangan pernah gunakan mulai [...] berakhir

Ini:

begin […] end 

selalu identik dengan ini:

([…])
Édouard
sumber
2

Tetapkan beberapa variabel atau fungsi sekaligus

Berkat tuple, Anda dapat mendefinisikan beberapa variabel sekaligus. Dan karena fungsinya adalah warga negara kelas satu ...:

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

Namun, Anda tidak dapat menulis:

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

Kesalahan: Nilai tidak terikat f

Sayangnya, Anda tidak dapat menghindari masalah dengan menggunakan rec:

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

Kesalahan: Hanya variabel yang diizinkan sebagai sisi kiri let rec

Édouard
sumber
2

Mengeksploitasi fungsi kari

Fungsi di OCaml dikeringkan. Mungkin bermanfaat untuk mengeksploitasi fakta itu kadang-kadang.

let n y=f x y

dapat ditulis

let n=f x

Jika Anda memerlukan operasi aritmatika, Anda dapat mengelilinginya dengan tanda kurung sehingga berperilaku seperti fungsi awalan standar. (+),, (-)...

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

- : int = 4

Édouard
sumber