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
-~----------~----~----~----~------~----~------~--~---