Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
OCaml 0.97 KB | None | 0 0
  1. (* in questo caso creo un meccanismo per la gestione di variabili di tipo intero *)
  2. type ide = string;;
  3. (* una funzione che prende in input un identificatore e ne restituisce il valore *)
  4. type 't env = ide -> 't;;
  5.  
  6. (* ambiente vuoto, fallisce sempre *)
  7. let empty_env = fun x -> failwith("Value not found!");;
  8.  
  9. (* funzione per il binding
  10.   Prende in input l'identificatore, il valore, e l'ambiente.
  11.   Restituisce l'ambiente dove è stata bindata la funzione.
  12.   È strano, ma funziona per composizione di funzioni
  13. *)
  14. let bind (id : ide)  (value : 't) (e : 't env) : 't env = fun x -> if x = id then value else e x;;
  15.  
  16. (* Testing *)
  17. (* creo un ambiente vuoto *)
  18. let empty_env = fun x -> failwith("Not such element in the environment");;
  19.  
  20. (* bindo all'ambiente vuoto una variabile e il suo valore *)
  21. let env = bind "x" 10 empty_env;;
  22. let env = bind "y" 11 env;;
  23. let env = bind "k" true env;;
  24.  
  25. env "x";; (* scrive 10 *)
  26. env "y";; (* scrive 11 *)
  27. env "k";; (* lancia eccezione *)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement