Funzioni come oggetti di prima classe in Ocaml

Nel linguaggio Ocaml le funzioni sono oggetti di prima classe.

Questo vuol dire che una funzione può anche essere un elemento di una struttura dati.

Ad esempio, gli elementi di una coppia possono anche essere funzioni.

coppia=(funzione, numero)
coppia=(funzione, funzione)

Allo stesso modo qualsiasi tupla.

    Un esempio pratico

    In questo script definisco tre funzioni.

    La prima funzione raddoppia un numero intero mentre la seconda funzione calcola il successore di un numero intero.

    let raddoppia x=x*2;;
    let successivo x=x+1;;
    let calcola(f,g) x = f(g(x));;

    La terza funzione calcola() è una funzione di ordine superiore composta da una coppia (f,g) e da un valore x.

    La coppia (f,g) è una semplice struttura dati in cui gli elementi sono altre funzioni.

    Ad esempio, richiamo la funzione calcola() passandogli la coppia (raddoppia, successivo) e il numero intero 2.

    calcola(raddoppia,successivo) 2;;
    - : int = 6

    La funzione accede agli elementi della coppia e li usa come funzioni.

    Prima calcola il successivo(2)=3 e poi utilizza il risultato come argomento di raddoppia(3)=6.

    E così via.

     


     

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

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Le funzioni in Ocaml