Hello ocaml list, I have a list of name constructor pairs and from that list I want to define a set of recursive types. I've written the following function: let type_chain _loc lst = let rec iter sofar = function | [] -> sofar | (name,constructors) :: ys -> iter <:str_item< $sofar$ and $lid:name$ = $constructor$ >> ys in match lst with (name,constructors) :: ys -> iter <:str_item< type $lid:name$ = $constructors$ >> ys | _ -> raise (Failure "no types defined") which, unfortunately, fails to type check with the error: " While expanding quotation "str_item" in a position of "expr": Parse error: illegal begin of quotation of structure item " how would I go about writing such a function? --Jacques L