type value = int;;
type variable = string;;

type environment;;
(* type environment = (variable * value) list;; *)

exception Unbound_variable of variable;;

val empty : environment;;

val bind : variable -> value -> environment -> environment;;

(* It may raise Unbound_variable *)
val lookup : variable -> environment -> value;;
