<bluestorm>
what's the interest, when camlp4 is in the standard distribution ?
<thelema>
hmm, maybe I should look into the camlp4[ro]*
<thelema>
easiest way to build ocamlc so any programs compiled by it automatically get processed by a given camlp4 macro (I assume that I can merge many camlp4 macros into one mega-macro)
<thelema_>
easiest way to build ocamlc so any programs compiled by it automatically get processed by a given camlp4 macro (I assume that I can merge many camlp4 macros into one mega-macro)
<thelema_>
any camlp4 gurus?
* thelema_
wants to look into perma-hooking some camlp4 extensions into community-ocaml
<bluestorm>
one could think of a (tadaam !) camlp4 extension to automagically generate those functors from the function source code :-'
<bluestorm>
at the camlp4 level, you could try camlp4o `ocamlfind query -i-format type-conv` `ocamlfind query -i-format sexplib` pa_type_conv.cmo pa_sexp_conv.cmo yourfile.ml
<evn>
Camlp4: Uncaught exception: DynLoader.Error ("/opt/godi/lib/ocaml/pkg-lib/sexplib/pa_sexp_conv.cmo", "error while linking /opt/godi/lib/ocaml/pkg-lib/sexplib/pa_sexp_conv.cmo.\nReference to undefined global `Pa_type_conv'")
<bluestorm>
at the camlp4 level, you could try camlp4o `ocamlfind query -i-format sexplib` pa_sexp_conv.cmo yourfile.ml
<bluestorm>
at the camlp4 level, you could try camlp4o `ocamlfind query -i-format type-conv` pa_sexp_conv.cmo yourfile.ml
<bluestorm>
toplevel + camlp4 is kinda broken in 3.10
<evn>
i am not really comfortable with camlp4 yet
* Yoric[DT]
has found a way to get its error-management to be handled by Camlp4 -- without Obj.magic.
2008-03-02
<Yoric[DT]>
I mean, using Camlp4 to introduce an Obj.magic might just be considered bad.
2008-02-28
<bluestorm>
i'm not sure it's possible to provide camlp4 with a "start-from-here" quotation
<flux>
I suppose there might already be "camlp4 expand" in tuareg
<flux>
and I would be able to almost directly feed it to camlp4 to create a stub?
<hcarty>
bluestorm: I would be interested in a let foo x = TODO kind of camlp4 extension if you decide to write it
<flux>
does camlp4 support resuming after first error?
<bluestorm>
i think someone could create an ocaml version with camlp4
<bluestorm>
another thing that could be intersting would be to integrate camlp4 better into emacs
<bluestorm>
camlp4 only do the syntax side
<bluestorm>
you could use camlp4 -str command line option
<bluestorm>
flux: on a larger note, you could create a camlp4 program to convert a .mli into a .ml
<bluestorm>
but i guess you can use post-3.10 camlp4 on 3.09 ocaml code
2008-02-23
<bluestorm>
so in practice, camlp4 would not be the right tool for that
<bluestorm>
but 1) the C logic isn't handled by camlp4 itself, you have to do it
<bluestorm>
you theorically could use camlp4 to create a OCaml -> C translator
<bluestorm>
ikatz: you can see camlp4 as a big framework intended at manipulating pieces of Abstact Syntax Tree
<ikatz>
does camlp4 actually do translation between languages?
<flux>
I wonder if you could convert ocaml into javascript with camlp4
2008-02-22
<lxuser>
so what am I supposed to change in the Makefile ? can I just change camlp4 to camlp5 and expect it to work?
<lxuser>
Camlp4: Uncaught exception: DynLoader.Error ("pa_ifdef.cmo", "file not found in path")
<julm>
me: Camlp4 Parsing version 3.10.2+dev3 (2008-01-29)
2008-02-20
<thermoplyae>
that might be controllable through camlp4, i've never used it before so i'm not sure what that's capable of
<flux>
I suppose I could use the example FLOAT camlp4 extension and it would remove or atleast reduce the pain
2008-02-19
<bluestorm>
looks like a camlp4 weirdiness
<xavierbot>
Camlp4 Parsing version 3.10.0
2008-02-18
<Yoric[DT]>
Well, if I ended up paid by LoC, I'd start by writing a Java quotation for Camlp4 :)
2008-02-15
<rwmjones>
you can use camlp4 to parse those files
2008-02-13
<bluestorm>
and (mod) doens't work well in camlp4 3.10.0
<xavierbot>
Camlp4 Parsing version 3.10.0
<xavierbot>
Camlp4 Parsing version 3.10.0
<RobertFischer>
I suppose camlp4 is probably more what I'm thinking about, but...
2008-02-08
<flux>
I'm trying to use ocaml 3.10.1 with godi and its sexplib, and I'm getting erro Camlp4: Uncaught exception: DynLoader.Error ("/opt/stow/godi/lib/ocaml/pkg-lib/sexplib/pa_sexp_conv.cmo", "error while linking /opt/stow/godi/lib/ocaml/pkg-lib/sexplib/pa_sexp_conv.cmo.\nReference to undefined global `Pa_type_conv'") - any suggestions?
2008-02-07
<Yoric[DT]>
Now, we could have a Camlp4 extension to avoid the call to "result".
* Yoric[DT]
has a wrap camlp4 extension, but it's probably not the same.
<bluestorm>
it's not cheaper than the old "wrap .." camlp4 extension idea
2008-02-05
<rwmjones>
some people don't like the original syntax enough that they implement their own, and camlp4 makes it easy to do
<ertai>
there is some posts on the caml-list about standalone + camlp4
<rieux>
the phrase above works as expected if camlp4 isn't loaded, but if it is, it reads from stdin.
<ertai>
rieux: have you seen examples that I've given, for building standalone apps with camlp4
<Yoric[DT]>
I actually considered implementing backtracking + unification as a Camlp4 extension with a prolog-style syntax.
<rieux>
The other interesting thing that's happening is that having camlp4 loaded causes Toploop.parse_toplevel_phrase (which I'm using to do some automation in the toploop) to read directly from stdin regardless of the buffer that it's given.
<rieux>
ertai: Sorry, i was asleep. I've been trouble loading and then calling into camlp4 from a standalone program (rather than a syntax extension loaded by p4). I've managed to get a parser by linking against camlp4of.cma (which in turn requires toplevellibs.cma), which doesn't seem like the right way to do it, but it's working. To get a printer, I am applying Camlp4.Printers.OCaml.Make myself, which doesn't seem too objectionable.
<Yoric[DT]>
Well, to use the revised syntax you need camlp4.
<flux>
it's not the difference between running and not running camlp4?
<Yoric[DT]>
Does anyone know if there's a way to get ocamlc to run its error messages through Camlp4 ?
<ertai>
rieux: do you have specific problems with camlp4?
2008-02-04
<bluestorm>
rieux: you could use camlp4
<rieux>
i'm trying to make a standalone program that relies on camlp4 for parsing and printing some parts of a dsl (embedded bits of ocaml), so it needs to call into camlp4 for parsing and printing. i've gotten what i think is a minimal test program, which dies when I run it with a message that "entry [expr] is empty", which indicates to me that I'm not loading a parser properly:
<rieux>
hi. i'm wondering if someone could help me with a camlp4 (linking, i think) problem.
<g36130>
Ah, ok, thanks. But is the new camlp4 going to be the standard?
<g36130>
Hi! Using Ocaml 3.10. How to have backward compatibility with camlp4? Should I go back to 3.9 ?
2008-02-03
<bluestorm>
Yorick: if you've got a nice syntax proposal, i'd be happy to create a small camlp4 syntax extension for that :p
<thermoplyae>
it's possible that this can be accomplished with camlp4, i don't know a thing about it
<mfp>
if camlp4 worked with JoCaml, it'd be fairly easy to autogenerate the code to fork + spawn appropriate channel
<Yoric[DT]>
(making sure that these computations have the right type can be enforced either using monadic style or, I believe, with a simple Camlp4 extension)
2008-02-02
<Yoric[DT]>
So I wasn't crazy, it was a camlp4 bug.
<Yoric[DT]>
It does send camlp4 on an infinite loop.
<xavierbot>
Camlp4 Parsing version 3.10.0
<rwmjones>
it's probably because of camlp4
2008-02-01
<jonafan>
maybe some wizard can make some camlp4 magic that does that pure function thing
<olegfink>
so, now I can begin writing lazy versions of all data structures in ocaml, and then add some fancy syntax with camlp4 ;)
2008-01-31
<mfp>
omg revised syntax! so the camlp4 sources aren't the only place where it's used ;-))
<bluestorm>
flux: Yoric[DT] is gonna propose you a nice camlp4 extension to automate the proccess :-'
<hcarty>
It makes testing camlp4 extensions much more difficult
<hcarty>
Is there a way to get around the "I/O error: Bad file descriptor" error when using a camlp4 extension in the toplevel?
2008-01-30
<Yoric[DT]>
I've been considering writing a Camlp4 extension to provide that kind of thing.
<flux>
and if you would need many of such functions, you could use camlp4 to do that for you :)
2008-01-24
<bluestorm>
would you be interested in a camlp4 library to generate locally-free variable names ?
2008-01-21
<Asmadeus>
Hello, I don't know if the one who made xavierbot is here, but I just want to let him know that there's some syntax problem with camlp4 with the last ocaml release, in case he doesn't.
<bluestorm>
i just found an "interesting comprehension camlp4 extension" this morning
<bluestorm>
could be nicely written with Yoric's camlp4 extension
<bluestorm>
iirc, it's treated specifically by camlp4 parser's,
2008-01-16
<bla>
About strange camlp4 behaviour? ;D
<bla>
It's not very important for me, but I like camlp4 error reports.
<bla>
This is either bug in camlp4 or incompatibility I don't understand:
2008-01-14
<bluestorm>
i guess using camlp4 only for syntax checking would make sense
<bluestorm>
Yoric[DT]: side question, why do you want to separate "each" from the "for" ? this adds a keyword anyway and i don't see this easier to parse with camlp4
<bluestorm>
i still don't really get it : how does camlp4 add the bunch of do .. end between with_input and the parameter ?
<bluestorm>
bla : one last thing : the stream syntax ( [< .. >] ) is now a camlp4 extension
<bla>
If you know some good materials about camlp4 (EXTEND...) and Plexer (I'm using INT e.g. but haven't seen it's definition and dedcription)
2008-01-07
<seafood_>
I'm having some trouble getting it to work as advertised in the Camlp4 wiki.
<seafood_>
Hey guys. Has anyone here used CamlP4's fold generator?
2008-01-05
<flux>
would syntax like \{} would be possible with camlp4?
<bluestorm>
as a camlp4 extension
<flux>
..been thinking that it'd be a nice way to study camlp4 developing..
2008-01-03
<jeffwheeler>
Hmm, is Camlp4 specifically for preprocessing OCaml code, or can generic lexers and parsers be written with it?
<bluestorm>
if you want a camlish parser, you can use camlp4 too
2007-12-30
<bluestorm>
and with that library come a little camlp4 thing that seems to allow one to define type-deriving functions easily
<Smerdyakov>
Jane Street has released a camlp4 library that will generate converters to and from S-expressions for OCaml type definitions.
<ahnfelt>
whew, I'd rather not venture into camlp4 for it
<bluestorm>
and i guess you may try to code a camlp4 filter that would derive such functions automatically, but i would except it to be non-trivial
2007-12-29
<bluestorm>
camlp4 3.10
<bluestorm>
i just tried a camlp4 3.10 port
<bluestorm>
camlp4 feels cluttered because the syntax is much more structured
<tsuyoshi>
I mean, you need a whole manual to describe how to se camlp4
<flux>
I think camlp4's greatest limitation is that it cannot really interface with the type system.. but going around that would probably mean undecidable compilation
<tsuyoshi>
imo camlp4 is a poor substitute for lisp macros
2007-12-28
<bluestorm>
concerning the 3) , i think camlp4 (syntaxic approach) and MetaOCaml (code-generation approach) may be enough
2007-12-24
<bluestorm>
i've just written my first "usable" camlp4 syntax extension
<hcarty>
orbitz: You can mess with camlp4 to get .[] .() .{} etc to do different things. They are all defined in the OCaml sources as sugar for the matching *.get functions
<munga_>
Error while linking dnf.cmo: Reference to undefined global `Camlp4'
<munga_>
I'm compiling a simple program with ocamlbuild that uses camlp4 to write a parser. The compilation goes thought, but ocamlbuild fails to link camlp4lib.cma and therefore I get
<munga_>
I just figure it out ... I was calling camlp4 in the wrong way ... camlp4o instead of camlp4of !
2007-12-19
<Yoric[DT]>
Looks quite feasible with Camlp4.
<Yoric[DT]>
You can write a Camlp4 extension if you wish :)
<pango>
(short of defining your own syntax with Camlp4, I guess)
2007-12-18
<Yoric[DT]>
I'm actually using another Camlp4 extension for this pattern-matching: Patterns-0.3 .
<Yoric[DT]>
I'm lookint at the AST of Camlp4.
<Yoric[DT]>
Actually, technically, if you're willing to run camlp4 twice, it might work already.
<Jeff_123>
hi yoric, how goes the camlp4 fun?
2007-12-17
<Yoric[DT]>
Camlp4 3.10 foreach tutorial.
2007-12-16
<context>
regexp is easy, but i see camlp4 in code a lot more then Str.
<context>
camlp4 almost looks like a headache
2007-12-15
* Yoric[DT]
wonders how to chain Camlp4 extensions.
<Yoric[DT]>
Now, I can start thinking about Camlp4 :)
2007-12-14
<xavierbot>
Camlp4 Parsing version 3.10.0
<xavierbot>
Camlp4 Parsing version 3.10.0
<xavierbot>
Camlp4 Parsing version 3.10.0
<xavierbot>
Camlp4 Parsing version 3.10.0
2007-12-13
<xavierbot>
Camlp4 Parsing version 3.10.0
<xavierbot>
Camlp4 Parsing version 3.10.0
<context>
is camlp4 included in caml ?
<rwmjones>
it uses camlp4 to remove certain unsafe parts of the language
<Jeff_123>
oh it's using camlp4 parsing? Why does it need double ;; then?
<xavierbot>
Camlp4 Parsing version 3.10.0
<context>
yeah ive seen a bit about camlp4 havent looked into it
<flux>
context, google for ocaml camlp4, you'll see some funky stuff
<Jeff_123>
noooo yoric tell us all about camlp4!
2007-12-12
<mbishop>
Yoric[DT]: where is your camlp4 code anyway?
<Yoric[DT]>
Camlp4 doesn't like this kind of things too much.
2007-12-11
<Jeff_123>
how many bytes of camlp4 language does it take to implement it?
<Jeff_123>
is that the camlp4 stuff you've been working on?
2007-12-10
<Yoric[DT]>
Possibly with Camlp4 :)
<Yoric[DT]>
Plus I need to check the licence, as I had to copy and paste bits of Camlp4's source code and bits of ocaml-tutorial.org inside my code, due to some rules being private.
<Yoric[DT]>
Unfortunately, it's a bit big for the Camlp4 wiki.
<Jeff_123>
I'd appreciate ANY help with camlp4.
<Yoric[DT]>
But then, I only wanted to play a little with Camlp4.
2007-12-09
* Yoric[DT]
has done enough Camlp4 for the night.
2007-12-05
<hcarty>
I'd like to learn enough Camlp4 to eventually override the .{} syntax for Bigarrays so that the .{} is always used with Bigarray.Genarray.t, rather than the type being determined by the number of dimensions used
<Yoric[DT]>
Well, stream stuff will require some re-implementation, as they're locked into the private parts of Camlp4.
2007-12-02
<Yoric[DT]>
Or if they can't, by Camlp4 preprocessors.
2007-11-30
<Jeff_123_>
I'd write it if I knew camlp4, which would be nice.
<mattam>
I guess you can do that easily with camlp4
2007-11-27
<Jeff_123>
heh, maybe camlp4 has what I want? An ocaml parser i can use during run-time?
<Yoric[DT]>
I think I saw some Camlp4 magic used to add call/cc into OCaml, too.
2007-11-24
<flux>
I'm hoping at some point I would be able to write a camlp4-preprocessor, which would perform sufficient magic for the compiler to type check that
2007-11-23
<Yoric[DT]>
I haven't found any documentation, only the module & source code in Camlp4 3.10.
2007-11-21
<Jeff_123>
hell, i'd pay for an online course that taught camlp4 comprehensively
<Jeff_123>
anyone know of some secret camlp4 3.10 tutorial?
<Jeff_123>
I want to learn camlp4 for lots of reasons though
<hcarty>
Sdflow is a nice library for some similar things, without needing camlp4
<Jeff_123>
if I could figure out how camlp4 works maybe I could extend it further
2007-11-20
<Jeff_123>
yoric - did you know camlp4 before the 3.10 release?
<Jeff_123>
has anyone figured out a good way to learn the new camlp4?
2007-11-19
<xavierbot>
Camlp4 Parsing version 3.10.0
<flux>
I haven't done any camlp4, but I think you can still use the syntax with it
2007-11-18
<Yoric[DT]>
I haven't fully mastered Camlp4 yet, but it's quite powerful.
<Jeff_123>
camlp4 is powerful but i've found it hard to learn
<Yoric[DT]>
(And they're called Camlp4 in the OCaml world :))
<Jeff_123>
grrr, they still haven't updated the ocaml tutorial for 3.10's camlp4
2007-11-09
<rwmjones>
using camlp4 of course
2007-11-08
<xavierbot>
Camlp4 Parsing version 3.10.0
<flux>
I had an idea the other day.. it should be possible to create reliable refactoring tools with camlp4 and the piece of code that annotates the code with types (per -dtypes)
2007-10-31
<flux>
(it doesn't have any camlp4, which would also be nice)
2007-10-28
<bluestorm_>
but they exists as a camlp4 extension
<bluestorm_>
the confusing thing is, camlp5 is closer to 3.09 camlp4 than 3.10 camlp4 is
<bluestorm_>
so he "forked" : took the old camlp4 and created camlp5
<bluestorm_>
the original author of camlp4 is not happy with these changes
<bluestorm_>
for the 3.10, camlp4 got a partial rewrite
<salierix>
What's the dirrence between camlp4 and camlp5?
<bluestorm_>
i used it for camlp4 extension, and while i think a part of it is really nice, some bits are heavy to use
<hcarty>
Is there a way to #use multiple files in the toplevel after loading a camlp4 extension?
<vorago>
It would be queer; I've written two, three parsers and still have no idea about camlp4.
<vorago>
How is camlp4 related to ocamlyacc and ocamllex?
<flux>
bluestorm_, you know, like determining types of expressions at camlp4 stage
<bluestorm_>
flux: camlp4 type inference ?
<bluestorm_>
his other project on Google Code (click on his name to see the url) is a little camlp4 extension wich looks really nice
<bluestorm_>
because there is some camlp4 magic under the hood i guess
<vorago>
camlp4 I guess is more generic.
<bluestorm_>
but camlp4 is purely syntaxic
<Yoric[DT]>
Camlp4 *is* OCaml.
<Yoric[DT]>
vorago: probably. Depends on what you mean by "camlp4 calls".
<bluestorm_>
"camlp4 calls" ?
<vorago>
Is it possible (as I don't know camlp4) to do recursive camlp4 calls?
<flux>
yoric[dt], it would be fun if the type information was available in camlp4
* Yoric[DT]
has played with Camlp4.
<vorago>
But they generally should be functor - like. Not camlp4 like.
<Yoric[DT]>
Except, of course, that Camlp4 is OCaml :)
<Yoric[DT]>
Well, just like Camlp4.
<vorago>
I guess it's doable with camlp4.
2007-10-25
* Yoric[DT]
wonders how to use Camlp4's Lexer.
2007-10-24
* Yoric[DT]
is now writing his own custom pre-processor largely without Camlp4.
<Le-Chuck_ITA>
just a newbie question: how do I tell camlp4 to find camlp4 files in a local directory instead of /usr/lib/ocaml/.... ?
<Le-Chuck_ITA>
maybe with camlp4
<Yoric[DT]>
Now, back to attempting to pre-process a non-OCaml file using Camlp4...
2007-10-23
<Yoric[DT]>
Has anyone used Camlp4's DEFINE, IFDEF... ?
<DT>
Well, Camlp4 is supposed to work as a generic pre-processor, too.
<vorago>
I had a great desire of learning Camlp4 also; but there's no time for it. ;s
* DT
is now trying to teach a little syntax to Camlp4.
2007-10-22
<DT>
Any camlp4 pro around here ?
<DT>
It's Camlp4 reduced to the role of a unversal preprocessor.
2007-10-19
<DT>
I tend to believe that's the domain of MetaOCaml or Camlp4 rather than OCaml.
2007-10-18
<Yoric[DT]>
Yeah, my Camlp4 syntax extension works at last.
<DT>
And that's where I get camlp4 into what looks like an infinite recursive loop...
<DT>
I think I'm starting to get the feeling of camlp4 3.10 .
2007-10-17
<DT>
With the old camlp4 (not that I was any good with it), I figured out that I had to customize type_declaration.
<bluestorm_>
i think the best way to look at is the actual camlp4 code
<DT>
I'm a newbie with camlp4 and I'm trying to customize types.
<DT>
Could anyone give me a hand with the new camlp4 ?
2007-10-08
<joelr1>
ericlavigne: it's easier than that with camlp4
2007-10-05
<joelr1>
krumms: how about a camlp4 3.10 tutorial? now THAT would be groovy
<joelr1>
haelix: do you know camlp4?
2007-10-04
<bluestorm>
(i think the mapper/folder classes are one of the nicest things in 3.10 camlp4, or at least funniest to use)
<bluestorm>
if they are simple enough, you may rely on the camlp4 AST map/fold, without using EXTEND directives
<bluestorm>
(this wiki is the best documentation i found about 3.10 camlp4)
<bluestorm>
just played with camlp4 a little this summer
<joelr1>
bluestorm: i'm looking at Camlp4OcamlParser.ml and it uses class_declaration. i read before that camlp4 is based on the revised syntax, so i'm gonna look for class_declaration in the revised parser...
<joelr1>
bluestorm: basically, it's about using camlp4 3.10 to parse class defs
<joelr1>
bluestorm: just posted my question to caml-list (camlp4)
2007-09-30
<flux>
if you add camlp4 to the mix something more nicely typeable should be possible
2007-09-29
<ita_>
i never used the camlp4 mapping for c++ (map objects to caml types), it looked harder and i never had more than 2-3 functions
2007-09-25
<noss>
i remembe seeing camlp4 demonstrated in some slides on how to create a dsl in 15 min :)
<rwmjones>
noss, not unless you use camlp4
2007-09-14
<Tetsuo>
there was some camlp4 magic to open a module locally, with the "open Foo in" syntax. The extension was on Nicolas Pouillard site iirc, however it was not camlp4 3.10 compatible
2007-09-08
<flux>
the naming is a bit unfortunate.. but I wonder, does that camlp5 work nicely together with the current camlp4?
2007-09-04
<bluestorm_>
lde: you may use Camlp4 to redefine some uses of .(), based on syntaxic considerations only
<lde>
I was wandering if I could somehow define .() in ocaml, without camlp4.
<lde>
Well, I don't much about camlp4.
<bluestorm_>
and the Camlp4 AST does have a way to express that e.(n) thing
<bluestorm_>
you first use and manipulate a Camlp4 AST
<bluestorm_>
when parsing using the camlp4 tools
<bluestorm_>
at least in the camlp4 parser
2007-09-02
<pango>
old or new camlp4? :)
<bluestorm_>
there is a FStream lib in camlp4
2007-08-30
<bluestorm>
after having the head into the camlp4 sources for some days, "refutable" looked like a good idea
2007-08-28
<xavierbot>
Camlp4 Parsing version 3.10.0
<xavierbot>
Camlp4 Parsing version 3.10.0
<bluestorm>
seems the default ocaml parser accept (lsl), and the camlp4 one doesn't
<bluestorm>
xavierbot may use camlp4
2007-08-25
<bluestorm>
you could do a camlp4 extension for that
<ita>
bluestorm: you have not tried ? :-) i think the command-line is something like -pp "camlp4 ocaml+twt"
<ita>
bluestorm: the camlp4 can be chained with twt already
<bluestorm>
(he *might* be interested in my camlp4-twt summer attempt)
<bluestorm>
if you were using ocaml, you could use camlp4 for syntaxic support
<bluestorm>
it *might* be actually possible to fool camlp4 into thinking Foo is a lowercase identifier :-'
2007-08-24
<bluestorm>
camlp4 is the ocaml preprocessor
<ktne>
what camlp4 does?
<bluestorm>
the camlp4 way to do that
<bluestorm>
there are two ways to do it, the low-level one, wich is in the Stream library (Stream.peek and Stream.junk, mostly), and the one using a camlp4 syntax-extension
2007-08-23
<flux>
loufoque, there are camlp4 extensions that can implement that
2007-08-22
<flux>
mr_hugo, hey, you could do that with camlp4 :)
2007-08-21
<flux>
bluestorm_, ooh, apparently the new camlp4 is object-based now?