Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (* in questo caso creo un meccanismo per la gestione di variabili di tipo intero *)
- type ide = string;;
- (* una funzione che prende in input un identificatore e ne restituisce il valore *)
- type 't env = ide -> 't;;
- (* ambiente vuoto, fallisce sempre *)
- let empty_env = fun x -> failwith("Value not found!");;
- (* funzione per il binding
- Prende in input l'identificatore, il valore, e l'ambiente.
- Restituisce l'ambiente dove è stata bindata la funzione.
- È strano, ma funziona per composizione di funzioni
- *)
- let bind (id : ide) (value : 't) (e : 't env) : 't env = fun x -> if x = id then value else e x;;
- (* Testing *)
- (* creo un ambiente vuoto *)
- let empty_env = fun x -> failwith("Not such element in the environment");;
- (* bindo all'ambiente vuoto una variabile e il suo valore *)
- let env = bind "x" 10 empty_env;;
- let env = bind "y" 11 env;;
- let env = bind "k" true env;;
- env "x";; (* scrive 10 *)
- env "y";; (* scrive 11 *)
- env "k";; (* lancia eccezione *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement