From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from majordomo@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id EAA00635; Wed, 4 Feb 2004 04:04:02 +0100 (MET) X-Authentication-Warning: pauillac.inria.fr: majordomo set sender to owner-caml-list@pauillac.inria.fr using -f Received: from nez-perce.inria.fr (nez-perce.inria.fr [192.93.2.78]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id EAA02366 for ; Wed, 4 Feb 2004 04:04:01 +0100 (MET) Received: from cs.rice.edu (cs.rice.edu [128.42.1.30]) by nez-perce.inria.fr (8.11.1/8.11.1) with ESMTP id i14340v26470 for ; Wed, 4 Feb 2004 04:04:00 +0100 (MET) Received: from localhost (localhost [127.0.0.1]) by cs.rice.edu (Postfix) with ESMTP id BC5D24AAE9; Tue, 3 Feb 2004 21:03:59 -0600 (CST) Received: from cs.rice.edu ([127.0.0.1]) by localhost (cs.rice.edu [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 06172-01-84; Tue, 3 Feb 2004 21:03:57 -0600 (CST) Received: from boromir.cs.rice.edu (boromir.cs.rice.edu [128.42.129.71]) (using TLSv1 with cipher EDH-RSA-DES-CBC3-SHA (168/168 bits)) (No client certificate requested) by cs.rice.edu (Postfix) with ESMTP id EB1BE4A9A3; Tue, 3 Feb 2004 21:03:54 -0600 (CST) Date: Tue, 3 Feb 2004 21:03:54 -0600 (CST) From: Walid Taha To: Jacques Carette Cc: caml-list@inria.fr Subject: RE: [Caml-list] partial eval question In-Reply-To: <002d01c39cc6$1ac80680$1b447182@cas.mcmaster.ca> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Virus-Scanned: by amavis-20030616-p5 at rice.edu X-Loop: caml-list@inria.fr X-Spam: no; 0.00; caml-list:01 jacques:01 metaocaml:01 jacques:01 metaocaml:01 burdensome:01 bug:01 faq:01 faq:01 beginner's:01 beginners:01 bin:01 caml-bugs:01 ocaml:01 caml:01 Sender: owner-caml-list@pauillac.inria.fr Precedence: bulk Hi Jacques, Please see my last email in responce to Ben's original email. MSP in MetaOCaml doesn't require any "contortions". Walid. On Mon, 27 Oct 2003, Jacques Carette wrote: |> If you really want more control over code generation (not forgetting |> that just writing out what you want by hand is often the simplest |> option in practice!) then I think C++ templates are a dead end---far |> better to make the object language the same as the target language, |> as in MetaOcaml and similar. | |If you know what you want, MetaOcaml is great. If you are |prototyping/experimenting, then a typeless symbolic language (like Scheme or |Maple) give you much greater flexibility. MetaOcaml's contortions to get |something like: | |> pow := proc(x,n::nonnegint) if n=0 then 1 else times(x,pow(x,n-1)) end if |end proc; |pow := proc(x, n::nonnegint) | if n = 0 then 1 else times(x, pow(x, n - 1)) end if |end proc | |> unapply(pow(x,5), x); | x -> times(x, times(x, times(x, times(x, times(x, 1))))) | |is really quite burdensome. Having the freedom of dealing with 'open' terms |as first-class citizens is really very powerful, if somewhat dangerous. | |I have found Thiemann's PGG as the 'front end', coupled with |Scheme-to-YourFavoriteLanguage translation to be quite effective PE |strategy, at least when more basic 'symbolic computation' is not enough. | |Jacques | |------------------- |To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr |Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ |Beginner's list: http://groups.yahoo.com/group/ocaml_beginners | -- ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners