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

     


     

    Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Le funzioni in Ocaml