From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Delivered-To: caml-list@yquem.inria.fr Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by yquem.inria.fr (Postfix) with ESMTP id 938C9BC75 for ; Mon, 21 Feb 2005 15:31:26 +0100 (CET) Received: from pauillac.inria.fr (pauillac.inria.fr [128.93.11.35]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id j1LEVqm2004939 for ; Mon, 21 Feb 2005 15:31:52 +0100 Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id PAA01947 for ; Mon, 21 Feb 2005 15:31:31 +0100 (MET) Received: from biggles.scientician.net (0x50a5bb8d.odnxx9.adsl-dhcp.tele.dk [80.165.187.141]) by concorde.inria.fr (8.13.0/8.13.0) with ESMTP id j1LEVUoQ004487 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 21 Feb 2005 15:31:31 +0100 Received: from bardur by biggles.scientician.net with local (Exim 4.43) id 1D3D61-00025T-KP; Mon, 21 Feb 2005 13:55:29 +0100 Date: Mon, 21 Feb 2005 13:55:29 +0100 From: Bardur Arantsson To: caml-list@inria.fr Subject: Re: [Caml-list] Camlp4 with traditional syntax (was: Camlp4 documentation) Message-ID: <20050221125529.GA20112@scientician.net> Mail-Followup-To: caml-list@inria.fr References: <4215A18C.7040603@barettadeit.com> <4215AD36.1070303@cs.unisa.edu.au> <42161793.7030704@barettadeit.com> <4219D3E9.80003@barettadeit.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4219D3E9.80003@barettadeit.com> User-Agent: Mutt/1.5.8i X-Miltered: at concorde with ID 4219F0D8.000 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Miltered: at concorde with ID 4219F0C2.006 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! X-Spam: no; 0.00; caml-list:01 syntax:01 baretta:01 wrote:01 hendrik:01 tews:01 wrote:01 baretta:01 expander:01 bypassing:01 expr:01 struct:01 ocaml:01 expander:01 ocaml:01 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on yquem.inria.fr X-Spam-Status: No, score=0.1 required=5.0 tests=FORGED_RCVD_HELO autolearn=disabled version=3.0.2 X-Spam-Level: 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. 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.