Hello,

I would like to convert an Ocaml expression:

let t1 = | ["f(X,Y)"; "g(X,Y)"] | in ()

to:

   let t1 =
     List.iter (fun i -> print_endline i) ["f(X,Y)"; "g(X,Y)"]
   in
   ()

To do this I use:

let expand_term_list loc l =
           let nl = <:expr< [] >>                      in
           let nl = List.fold_right (fun h t ->
                   <:expr< [$h$::$t$] >>
                   ) l nl                              in
           <:expr<
           do {
                 List.iter (fun i -> print_endline i) $nl$
            }
           >>

EXTEND
   Pcaml.expr: [
     [
     "|"; l = LIST0 Pcaml.expr  SEP ";" ; "|" -> expand_term_list loc l ]
   ];
END;;


Unfortunately the output I get is:

   let t1 =
     List.iter (fun i -> print_endline i) [["f(X,Y)"; "g(X,Y)"]]
   in
   ()

As I understand it, we have to do list construction ourselves seeing as 
we have no quotations for this. But it seems that the parameter "l" I am 
passing to the function "expand_term_list" is an AST element and not a 
list of AST nodes. How do I actual get the list elements?

TIA.
Hugo F.





--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"ocaml-developer" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/ocaml-developer?hl=en
For other OCaml forums, see http://caml.inria.fr/resources/forums.en.html
-~----------~----~----~----~------~----~------~--~---

Reply via email to