OCaml'de golf için ipuçları


10

Diğer 'xyz dilinde golf için ipuçları' ürün yelpazesinden esinlenmiştir. Her zamanki gibi, lütfen genel olarak programlama için değil, yalnızca OCaml'e özgü ipuçları önerin. Cevap başına bir ipucu lütfen.


1
Birkaç belirgin ipucu eklememin bir sakıncası var mı?
Édouard

Yanıtlar:


4

Eşleşme yerine işlevleri kullanma

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

daha kısa

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

3

Asla begin […] end kullanmayın

Bu:

begin […] end 

her zaman bununla eş anlamlıdır:

([…])

2

Birden çok değişkeni veya işlevi aynı anda tanımlayın

Tuples sayesinde, aynı anda birkaç değişken tanımlayabilirsiniz. Ve fonksiyonlar birinci sınıf vatandaşlar olduğu için…:

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

Ancak şunları yazamazsınız:

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

Hata: Bağlı olmayan f değeri

Ne yazık ki, sorunu kullanarak sorunu önleyemezsiniz rec:

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

Hata: Yalnızca değişkenlerin sol tarafı olarak izin verilir let rec


2

Exploit curryied işlevleri

OCaml'deki işlevler köri yapılır. Bazen bu gerçeği kullanmak faydalı olabilir.

let n y=f x y

yazılabilir

let n=f x

Aritmetik işlemlere ihtiyacınız varsa, bunları standart önek işlevleri gibi davranmaları için parantez içine alabilirsiniz. (+), (-), ...

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

- : int = 4

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.