Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
Immediate recursive functions
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2005-02-21 (14:31)
From: Bardur Arantsson <list-caml-list@s...>
Subject: Re: [Caml-list] Camlp4 with traditional syntax (was: Camlp4 documentation)
On Mon, Feb 21, 2005 at 01:28:25PM +0100, Alex Baretta wrote:

> Hendrik Tews wrote:
> >Alex Baretta <> writes:

> >   There is one more issue with Camlp4: it does not allow for quotations
> >   to expand to generic syntactic elements. Often, I use quotations which
> >   expand to module definitions. I had to implement my own quotation
> >   expander, bypassing the limitations of Camlp4 to achieve this.

> >I don't quite understand, what's wrong with 

> >let me = <:module_expr< struct $ list of module def's $ end >>
> >in
> >  <:str_item< module $some_name$ = $me$ >> 

> We use quotation expanders to embed completely different languages, such 
> as SQL, within Ocaml code. Specifically, the SQL quotation expander 
> compiles SQL code to an Ocaml module. CamlP4 signals an error because 
> quotations are only meant to be used as expressions or as patterns, 

IIRC quotations can expand to arbitrary ASTs. Only the point of *use*
(ie. substitution) determines which types of ASTs will be accepted.

Of course, if you're generating things like module interfaces and
implementations, you'll need to generate them side by side since there is
no "combined module interface+implementation" AST node type.

Bardur Arantsson

Intolerant people should be shot.