Come fare la negazione in Ocaml
Nel linguaggio Ocaml posso creare una funzione per ottenere il contrario di un predicato p.
let negazione p x = not (p x)
Dove p è un predicato logico qualsiasi.
La funzione negazione mi restituisce il contrario del predicato p quando è applicato all'argomento x.
Un esempio pratico
Definisco una funzione per stabilire se un numero è pari
let pari x = x mod 2 = 0
Poi definisco una funzione per negare un generico predicato p
let negazione p x = not (p x);;
Ora richiamo la funzione negazione applicata al predicato pari 6.
negazione pari 6
Il risultato è il contrario di pari(6) ossia false.
- : bool = false
La funzione pari(6) restituisce il valore booleano true che viene poi negato dall'operatore logico not.
Qual è la differenza tra la negazione e l'operatore logico not? In Ocaml non posso usare l'operatore not in una funzione currificata. Non posso scrivere not pari 5. Devo scrivere not(pari 5) perché not si applica solo ai valori booleani. Viceversa, la negazione è una funzione currificata che si applica ai predicati.