Le funzioni currificate in Ocaml
Nel linguaggio Ocaml una funzione currificata utilizza un argomento alla volta.
funzione arg1 arg2 ...
Gli argomenti sono separati tra loro da uno spazio.
A cosa serve la currificazione?
La currificazione permette di creare funzioni che possono essere richiamate anche parzialmente
Nota. Ogni funzione non currificata può essere trasformata in una funzione currificata equivalente. Nella versione currificata è molto più flessibile.
Un esempio pratico
Questa semplice funzione calcola la somma tra due numeri usando una coppia come un unico argomento. Non è una funzione currificata.
let somma (a,b) = a+b;;
Per currificare la funzione la riscrivo in questo modo
let somma a b = a+b;;
Il risultato in output è lo stesso.
Tuttavia, in questo caso i parametri sono passati in sequenza, uno dopo l'altro.
somma 2 4;;
- : int = 6;;
Nel primo caso, invece, i parametri sono passati come unico argomento
somma(2,4);;
- : int = 6;;
Il risultato è lo stesso ma la versione currificata ha un vantaggio perché posso usarla anche parzialmente.
somma 2;;
- : int -> int = <fun>
La versione non currificata, invece, non può essere usata parzialmente.
Ad esempio, definisco una nuova funzione che richiama la funzione somma in modo parziale, passandogli un solo parametro anziché due.
let incrementa = somma 1;;
Ora eseguo la funzione incrementa passandogli un solo parametro (8).
La funzione currificata somma addiziona 8+1.
incrementa 8;;
- : int = 9
E così via