L'istruzione if di OCaml

Nel linguaggio OCaml l'istruzione if mi permette di introdurre un'espressione condizionata nel programma.

if condizione then esp1 else esp2;;

Dove la condizione è una qualsiasi espressione semplice o complessa.

  • Se la condizione è vera, l'istruzione if esegue l'espressione esp1 della clausola then.
  • Se la condizione è falsa, esegue l'espressione esp2 della clausola else.

Nota. Nel linguaggio OCaml l'istruzione if va considerata come un'espressione complessa che assume un valore a seconda degli indicatori dell'ambiente operativo.

    Un esempio pratico

    Assegno alla variabile x il valore -5.

    let x=-5;;

    Tramite l'istruzione if verifico se la variabile x ha valori positivi

    if x>0 then x else -x;;

    Se la condizione (x>0) è vera l'istruzione if esegue l'espressione subito dopo la clausola then che conferma il valore x.

    In questo caso però la variabile x è negativa. Quindi, la condizione (x>0) è falsa.

    Pertanto, l'istruzione if esegue la seconda espressione, quella che segue la clausola else ossia l'espressione -x.

    - : int = 5

    In pratica, l'espressione complessa if assume il valore intero 5.

    E' un semplice esempio per rendere l'idea del funzionamento di una struttura condizionale nel linguaggio OCaml.

    Una precisazione importante

    Penso sia importante specificare che l'espressione -x dell'esempio precedente non modifica il valore della variabile x che resta x=-5.

    x;;
    val x : int = -5;;

    E' soltanto l'espressione if ad assumere il valore intero 5.

    Per modificare stabilmente il valore della variabile x, devo usare assegnare il valore dell'espressione if alla variabile x

    let x = if x>0 then x else -x;;

    In questo modo l'espressione if viene salvata nella variabile x.

    x;;
    val x : int = 5;;

    Questa modifica trasforma il valore della variabile x in un intero positivo.

    E così via.

     


     

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

    FacebookTwitterLinkedinLinkedin
    knowledge base

    Ocaml