(* monadic version of `let x = 2 in let f = \y -> y + x in f 3` *)
let (expr4 : int R.t) = R.(letx (mid 2) (letf (mid lambda1) (getf >>= fun f -> f (mid 3))))
(* monadic version of `let x = 2 in let f = \y -> y + x in f 3` *)
let (expr4 : int R.t) = R.(letx (mid 2) (letf (mid lambda1) (getf >>= fun f -> f (mid 3))))