Suggerimenti per il golf a OCaml


10

Ispirato all'assortimento di altri "Suggerimenti per giocare a golf in lingua xyz". Come al solito, suggerisci solo suggerimenti specifici per OCaml e non per la programmazione in generale. Un consiglio per risposta, per favore.


1
Ti dispiace se aggiungo alcuni ovvi suggerimenti?
Édouard,

Risposte:


4

Usa le funzioni invece della corrispondenza

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

è più corto di

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

3

Non usare mai inizio […] fine

Questo:

begin […] end 

è sempre sinonimo di questo:

([…])

2

Definire più variabili o funzioni contemporaneamente

Grazie alle tuple, puoi definire più variabili contemporaneamente. E poiché le funzioni sono cittadini di prima classe ...:

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

Non puoi, tuttavia, scrivere:

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

Errore: valore non associato f

Sfortunatamente, non puoi evitare il problema usando rec:

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

Errore: sono consentite solo variabili come lato sinistro di let rec


2

exploit curryied funzioni

Le funzioni in OCaml sono curry. A volte potrebbe essere utile sfruttare questo fatto.

let n y=f x y

può essere scritto

let n=f x

Se hai bisogno di operazioni aritmetiche, puoi circondarle tra parentesi in modo che si comportino come funzioni prefisso standard. (+), (-)...

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

- : int = 4

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.