(* alternatively, an env could be implemented as type char -> int *)
type 'a reader = env -> 'a;;
- let unit_reader (value : 'a) : 'a reader =
+ let reader_unit (value : 'a) : 'a reader =
fun e -> value;;
- let bind_reader (u : 'a reader) (f : 'a -> 'b reader) : 'b reader =
+ let reader_bind (u : 'a reader) (f : 'a -> 'b reader) : 'b reader =
fun e -> let a = u e
in let u' = f a
in u' e;;
(* this corresponds to having only a single mutable variable *)
type 'a state = store -> ('a, store);;
- let unit_state (value : 'a) : 'a state =
+ let state_unit (value : 'a) : 'a state =
fun s -> (value, s);;
- let bind_state (u : 'a state) (f : 'a -> 'b state) : 'b state =
+ let state_bind (u : 'a state) (f : 'a -> 'b state) : 'b state =
fun s -> let (a, s') = u s
in let u' = f a
in u' s';;