[wg-camlp4] Structured comments, shallow embeddings and deep quasiquotations
Leo White
lpw25 at cam.ac.uk
Tue Feb 5 15:57:30 GMT 2013
>I don't really like Leo's proposal.
>
>On the semantic side, I very much like Jeremy's idea
There is no fundamental difference between the two ideas. There are
problems with trying to use functions within modules as extensions. My
proposal is simply that we can get around this by attaching the functions
to namespaces.
>On the practical side, adding a notion of staged compilation
I'm not suggesting any notion of staged compilation. The whole point of
separating functions for extensions from modules is to avoid this issue.
>namespaces to handle syntax extensions seems really overkill.
Namespaces are going to be included anyway, there is no harm in using them
to help make syntax extensions easier.
>A reasonable compromise I would see between the point of view of Alain
>and Jeremy/Leo is to have an "unsafe" interface for global
>preprocessing, which we would discourage people from using by being
>very good at breaking backward compatibility (we can do better than
>Camlp4!), and *maintaining* at the same time one or several safer
>entry point that provide the local structure and conventional syntax
>that we think will bring more robustness to syntax extensions (like
>type-conv can currently be seen as a protective hub around type-driven
>boilerplate generation).
I agree. My proposal is not instead of ppx. It is a safer and easier-to-use
alternative for a large subset of the extensions ppx can support. It is a
more long-term option, for the short/medium-term we should use ppx.
>Leo, I'm a bit unclear on what kind of
>GADT you're thinking of, could you elaborate?
Nothing fancy, just something like:
type 'a ctx =
ExprQuot: string -> Ast.expr ctx
PattQuot: string -> Ast.patt ctx
...
ExprAst: Ast.expr -> Ast.expr ctx
PattAst: Ast.expr -> Ast.patt ctx
...
>Must we link extension functions together
I'm not sure I understand what you mean by this. Could you expand?
More information about the wg-camlp4
mailing list