+
+(* generator functions implementation ***************************************)
+
+let helm_vars_gen =
+ let mk_let v s x = M.Let (v, M.Const [(s, [])], x) in
+ let arity = Const 1 in
+ let code _ = function
+ | [x] -> mk_let "SET" "Set" x
+ | _ -> assert false
+ in
+ {arity = arity; code = code}
+
+(* generator functions interface ********************************************)
+
+let gen_get_spec = function
+ | ["helm"; "vars"] -> helm_vars_gen
+ | p -> raise (NameError p)
+
+let gen_arity p n = check_arity p n (gen_get_spec p).arity
+
+let gen_eval e p xl = (gen_get_spec p).code e xl