caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Wojciech Meyer <wojciech.meyer@googlemail.com>
To: "Jérémie Dimino" <jeremie@dimino.org>
Cc: Wojciech Meyer <wojciech.meyer@googlemail.com>, caml-list@inria.fr
Subject: Re: [Caml-list] Camlp4/p5 type reflection [was: OCaml maintenance status / community fork (again)]
Date: Sat, 10 Dec 2011 21:40:43 +0000	[thread overview]
Message-ID: <wfmxb0umuc.fsf_-_@gmail.com> (raw)
In-Reply-To: <1323550544.32136.19.camel@aurora> (=?utf-8?B?IkrDqXLDqW1p?= =?utf-8?B?ZQ==?= Dimino"'s message of "Sat, 10 Dec 2011 21:55:44 +0100")

Jérémie Dimino <jeremie@dimino.org> writes:

> Le samedi 10 décembre 2011 à 19:10 +0000, Wojciech Meyer a écrit :
>> I'm aware that these are huge changes to Camlp4, but it would make
>> meta programming more powerful and push Camlp4 to the next level.
>
> Sure. But it seems that the next version of OCaml will have runtime
> types, see http://www.lexifi.com/blog/runtime-types , so maybe it is not
> needed to add this to camlp4.

It's interesting and I didn't know about it. However, the problem is
slightly different, I would like to know the typing of a freshly
generated piece of code by Camlp4 in the previous phase. Then, have
pattern matching against these meta types in annotated AST and produce
another AST, which in turn have most likely another typing and pass to
the next phase etc. I would say that Camlp4 is fine for the simpler
syntax extensions and majority of small DSLs but when you start composing
syntax extensions and macros it quickly becomes a problem.

>
> Also they are problems that i don't know how to solve with the camlp4
> approach. For example consider:
>
>   let x = 1
>   type int = A
>   let y = A
>
> The typer knows that x has the type (int, 1) and y has the type (int,
> 42). But what you send to ocaml is a parse tree, and you cannot make
> this difference in the parse tree.

Yes, you would need a type information in the parse tree as mentioned
before, so you want to feed up the compiler with AST start unrolling
macros top-down and then follow up with the inferred types bottom-up.

Cheers;
Wojciech


  reply	other threads:[~2011-12-10 21:40 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-08  9:10 [Caml-list] OCaml maintenance status / community fork (again) Benedikt Meurer
2011-12-08  9:54 ` Alain Frisch
2011-12-08 10:28   ` Benedikt Meurer
2011-12-08 10:46     ` Alain Frisch
2011-12-08 11:08       ` Benedikt Meurer
2011-12-08 16:42       ` Fabrice Le Fessant
2011-12-08 10:47     ` ivan chollet
2011-12-08 14:07       ` oliver
2011-12-08 11:11     ` Pierre-Alexandre Voye
2011-12-08 18:18       ` Török Edwin
2011-12-09 21:42         ` oliver
2011-12-08 10:16 ` Gabriel Scherer
2011-12-08 11:07 ` Stéphane Glondu
2011-12-09  2:11 ` Jacques Garrigue
2011-12-09 10:37   ` Jérémie Dimino
2011-12-09 11:03     ` Gabriel Scherer
2011-12-09 11:17       ` Stefano Zacchiroli
2011-12-09 11:50         ` Jonathan Protzenko
2011-12-09 12:36           ` Alain Frisch
2011-12-09 23:22         ` Goswin von Brederlow
2011-12-09 22:33       ` oliver
2011-12-09 14:24     ` Benedikt Meurer
2011-12-09 17:00       ` Mehdi Dogguy
2011-12-09 17:36         ` Benedikt Meurer
2011-12-09 17:45           ` Mehdi Dogguy
2011-12-09 23:24             ` Goswin von Brederlow
2011-12-10  9:31               ` Benedikt Meurer
2011-12-10 14:45 ` Xavier Leroy
2011-12-10 15:58   ` Benedikt Meurer
2011-12-12 10:21     ` Xavier Leroy
2011-12-12 10:59       ` Benedikt Meurer
2011-12-12 12:20         ` Mehdi Dogguy
2011-12-12 15:17           ` Goswin von Brederlow
2011-12-19  4:09           ` Romain Beauxis
2011-12-19 17:35             ` Alain Frisch
2011-12-12 12:57         ` Gerd Stolpmann
2011-12-10 17:06   ` Török Edwin
2011-12-10 18:28   ` Jérémie Dimino
2011-12-10 18:34     ` Wojciech Meyer
2011-12-10 19:10       ` Wojciech Meyer
2011-12-10 20:55         ` Jérémie Dimino
2011-12-10 21:40           ` Wojciech Meyer [this message]
2011-12-10 23:34             ` [Caml-list] Camlp4/p5 type reflection [was: OCaml maintenance status / community fork (again)] Gabriel Scherer
2011-12-11  0:47               ` [Caml-list] Camlp4/p5 type reflection [ Wojciech Meyer
2011-12-11 11:19                 ` Gabriel Scherer
2011-12-11 18:14                   ` Jérémie Dimino
2011-12-11  9:04               ` [Caml-list] Camlp4/p5 type reflection [was: OCaml maintenance status / community fork (again)] Stéphane Glondu
2011-12-11  9:36                 ` Török Edwin
2011-12-11 10:29                 ` Gabriel Scherer
2011-12-11 11:23                   ` Gerd Stolpmann
2011-12-11 11:38                     ` Gabriel Scherer
2011-12-11 10:20               ` Fabrice Le Fessant
2011-12-11 10:47                 ` Gabriel Scherer
2011-12-11 13:27               ` Alain Frisch
2011-12-11 13:35                 ` Gabriel Scherer
2011-12-11 13:42                   ` Alain Frisch
2011-12-11 13:36                 ` Arnaud Spiwack
2011-12-11 13:46                 ` Stéphane Glondu
2011-12-10 23:28   ` [Caml-list] OCaml maintenance status / community fork (again) Jesper Louis Andersen
2011-12-11 11:02     ` Gerd Stolpmann
2011-12-13 19:36       ` oliver
2011-12-14 12:13         ` Gerd Stolpmann
2011-12-16 10:03           ` Stéphane Glondu
2011-12-11 13:33   ` Goswin von Brederlow
2011-12-11 13:59     ` [Caml-list] Community distribution [was: OCaml maintenance status / community fork (again)] Benedikt Meurer
2011-12-12 17:48   ` [Caml-list] OCaml maintenance status / community fork (again) Stéphane Glondu
2011-12-13 20:39     ` [Caml-list] New experimental ARM backend [was: OCaml maintenance status / community fork (again)] Benedikt Meurer
2011-12-14  9:18       ` Mark Shinwell
2011-12-14 21:51         ` Benedikt Meurer
2011-12-18 11:57       ` [Caml-list] " Benedikt Meurer
2011-12-18 13:08         ` Benedikt Meurer
2011-12-18 14:50           ` Alexandre Pilkiewicz
2011-12-18 16:42             ` Benedikt Meurer
2011-12-18 17:23           ` Stéphane Glondu
2011-12-21 10:11             ` [Caml-list] " Benedikt Meurer
2011-12-18 13:16         ` [Caml-list] " Benedikt Meurer
2011-12-17 18:36   ` [Caml-list] OCaml maintenance status / community fork (again) Stéphane Glondu
2011-12-18  4:25     ` Till Varoquaux

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=wfmxb0umuc.fsf_-_@gmail.com \
    --to=wojciech.meyer@googlemail.com \
    --cc=caml-list@inria.fr \
    --cc=jeremie@dimino.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).