<ngaylinn>
Hello! I'm trying to parse OCaml code in a C++ program. It'd be nice to take advantage of the ocaml suite to do this, since ocamlc and camlp4 can both produce parse trees, but neither of the formats these programs output are documented to my knowledge.
2005-07-07
<Enveigler_>
What is camlp4?
2005-06-26
<Demitar>
You may need to use camlp4...
2005-06-10
<ngaylinn>
I've tried using Camlp4, but it actually changes the source code (not just spacing), which is unacceptible for my purposes...
2005-05-24
<Nutssh>
mflux_, have you used camlp4?
<mflux_>
Camlp4 is a Pre-Processor-Pretty-Printer for OCaml. It offers syntactic tools (parsers, extensible grammars), the ability to extend the concrete syntax of OCaml (quotations, syntax extensions), and to redefine it from scratch.
<bronaugh>
camlp4 is?
<mflux_>
bronaugh, you could propably do what you want with the preprocessing facilities, that is, camlp4
2005-05-17
<araujo>
Camlp4 Parsing version 3.08.3
<mflux>
Camlp4 Parsing version 3.08.2
2005-04-30
<tautologico>
yes, this is a job for camlp4
2005-03-26
<stepcut>
which is why I was hoping to avoid regex madness and use the pre-existing and bug free camlp4 lexers/parsers :)
2005-03-25
<monochrom>
camlp4 is a macro language for ocaml.
2005-03-10
<Msandin>
especially as the stream patterns of camlp4 would probably have been a greater idea...
2005-02-25
<vincenz>
what do you do besides mucking with camlp4?
2005-02-24
<__DL__>
You can't. The only way is to use camlp4.
<Msandin>
Well, camlp4 is only syntax...
<Msandin>
yeah, my tool is a pure camlp4 extension, so it can't do any global grammar analysis, i hope(d) to avoid that by using inheritance, parametrized classes, variants and functors, i've not been clever enough so far:)
2005-02-23
* Msandin_
just recently wrote a generic string_of_<type> deriver, derived from the camlp4 tutorial..., handles constructed and tuple types...
<det>
Someone yesterday expressed interest in writing a camlp4 extension to generate a print from type descriptions
2005-02-20
<det>
Camlp4 seems like a nicer way of doing it since you get the parsing for free and the code can be inline in your program rather than a seperate file
<vincenz>
I was hoping to use camlp4 to automatically generate a printer for absyn
<det>
vincenz, "Is anyone familiar with camlp4" is a really poor question
<vincenz>
anyone familiar with camlp4?
2005-01-31
<Amorphous>
hi. i want to use camlp4 for auto-indentation. is there a way to stop "camlp4o pr_o.cmo file.ml" from eating some comments?
2005-01-26
<letaris>
hehe, remember the pa_lisp camlp4 plugin
2005-01-05
<lodewijk>
the camlp4-based LL(1) parsers
* monochrom
re-defines "parser generator" in a convoluted way so as to include camlp4 :D
<TheDracle>
Ah, it's part of camlp4.
2005-01-01
<Svrog>
you need to load camlp4o.cma first of link your app with camlp4
<Svrog>
stream literals are a part of the camlp4
2004-12-17
<oberke>
capnemo: you can use a so-called "revised", heretic syntax with ocaml by means of the camlp4 preprocessor
2004-12-10
<|Lupin|>
In other words can the compiler or camlp4, or some other tool expand #define macros ?
<Demitar>
You do realize ($) is discouraged, right? (Breaks with camlp4.)
2004-12-01
<pflanze>
Do people use the revised syntax offered by camlp4? Should I prefer it to the normal one for learning the language?
2004-11-30
<judge>
i looked at camlp4
2004-11-18
<Demitar>
You might want to use some camlp4 thingie then.
2004-11-05
<kinners>
is it something you can't do with camlp4?
<vincenz>
TheDracle: well first of all the camlp4 compiler gives REALLY crappy error-tihngies
<TheDracle>
vincenz: Yeah, I've used some cute camlp4 extensions before.
<vincenz>
I wonder how camlp4 handles when you add extra syntax... I mean doesn't it lead to conflicts?
<segphault>
yeah, by default camlp4 assumes that an anti-quotation without a specified type is an expression. $e1$ is a default anti-quotation. $lid:e1$ is an anti-quotation with the explicit type LIDENT.
2004-11-04
<segphault>
I've been trying (unsuccessfully) to generate anonymous functions with camlp4 quotations... something along the lines of: <:expr< fun $e1$ -> $e1$ * 2 >> but I havent been able to get it to compile. I'm assuming I have to specify some particular type for the anti-quotation that I use to fill in the arguments, but I dont know which one or how it should look.... anybody have any hints for me?
2004-10-27
<CosmicRay>
the ocaml source could have been easier if they had used streams and camlp4
2004-10-25
<Demitar>
Sounds like a job for... Captain Camlp4! (* No, it's not me. :) *)
2004-10-20
<dobrek>
any camlp4 masters or users ? I have a following problem I would like to write something like <:str_item< value a () = List.iter print_string [ $list:some_list$ ] >> but this doesn't work.
2004-10-19
<det>
Is it possible to write camlp4 expanders that expand to an expander
2004-10-17
<jason>
mkcamlp4 makes a camlp4 exec right?
<jason>
I tried ocamlmktop -pp "ocamlp4o <fliter>" -I +camlp4 -o top
2004-10-16
<Demitar>
(Thus I should probably go look at camlp4 again.)
2004-10-13
<arty>
Since I provide a camlp4 module, I can patch things up nicely using it
2004-10-05
<jason__>
It may be an older version of Ocaml's camlp4 blocking this one, or something, I'll investigate it further.
<jason__>
Hm, does camlp4 come with the main ocaml distro or do you need to download it separately? If so, where from?
2004-10-01
<kuribas>
eugos: I was reading about camlp4, and it looked like it integrated well with the language
<eugos>
kuribas, I've used neither camllex+camlyacc, nor camlp4 yet. I've written my XML parser with Stream+Buffer only, like genlex.ml is done in the ocaml distrib
<eugos>
kuribas, several ways: camllex+camlyacc, camlp4, Stream, or Scanf at last ;)
<kuribas>
can camlp4 be used for creating compilers (instead of camlyacc)?
2004-09-27
<beschmi>
eugos: there is a nonvalidating xml parser using camlp4 in there (xml/..)
<eugos>
Just to be more experienced in ocaml I've written a non-validating XML parser using Stream.peek, Stream.junk, etc. stuff. Could you say me if it is easier to make such things with [< >]-like things of camlp4? I'm not familiar with them yet, but I'm going to look at.
2004-09-25
<Excedrin>
check out camlp4, I'm sure you can make it how ever you like
2004-08-23
<mattam>
mldonkey has some camlp4
<bitwiseshiftleft>
is the source for camlp4
<bitwiseshiftleft>
thanks, i've been staring at said docs for a couple hours, but no progress since I don't know any camlp4 :-)
<mattam>
bitwiseshiftleft: i don't know much camlp4, but i will go through the docs to try to find an answer :)
<Riastradh>
No, camlp4 has no help.
<bitwiseshiftleft>
can someone help me with a bit of camlp4?
2004-08-19
<sic->
camlp4 stuff
<Hadaka>
can I somehow use camlp4 in scripts for the toplevel?
2004-07-22
<Herrchen>
well camlp4 can be very handy
<Herrchen>
the difference is that camlp4 does syntactic preprocessing
<Herrchen>
#define is preprocessor, camlp4 does preprocessing
<Herrchen>
faramirr: you could use camlp4
2004-07-20
<Demitar>
Well camlp4 has some extensions, but in general you probably want a well defined storage anyway (perhaps one of the xml libs as backend).
2004-07-10
<CapNemo>
Riastradh, camlp4 ?
<Riastradh>
You might note that OCaml has three separate facilities too: real parametric polymorphism, real parameterized modules (functors), and camlp4.
2004-06-25
<mattam>
you tell it which packages you want (including threads, camlp4) and it executes the right command
<cDlm>
camlp4 works
2004-06-15
<kinners>
camlp4?
2004-05-31
* Demitar
uses the camlp4 regexp syntax extension and is stunned at it's beauty...
2004-05-29
<Demitar>
wolfman8k, Marshal is good for caching, not real storage. You might want to check out the camlp4 extension for generating xml writers and readers for data structures.
<Banana>
if it involves typing and optimising of cours camlp4 cannot do this.
<ayrnieu>
I read that camlp4 has astonishing power, before 2002 even. I guess that one of us will just have to try it and see -- and I've other things to do right now.
<Banana>
if it's a syntactic problem only then camlp4 should be more than enough.
<wolfman8k>
i read that camlp4 isn't powerful enough
<Banana>
then use camlp4 to beautify it.
2004-05-28
<segphault>
its a camlp4 thing. i'm using "-I +camlp4" on the command line, but it hasnt helped.
<monotonom>
you may like to consider camlp4
2004-05-27
<mfurr>
camlp4 is a framework for extending the ocaml syntax... so you kinda do whatever you want with it(almost)
<mfurr>
ocaml is usually preprocessed with camlp4
2004-05-25
<mfurr>
especially with the camlp4 syntax sugaring library out there
2004-05-11
<benja>
what I want to do is something like ocamlc -c -pp "ocamlfind -package pxp camlp4 ./q_GConf.cmo" .....
<benja>
so camlp4 cannot load ./q_GConf.cmo
<benja>
and camlp4 complains: Reference to undefined global `Pxp_yacc'.
<benja>
I think that if the module that camlp4 loads is static that could work. But how can I make a static module ?
<benja>
does anyone know if camlp4 support findlib when camlp4 is loading a object file which use a findlib package ?
<benja>
does anyone know if findlib support camlp4 ?
<LittleDan>
This is probably a really stupid question, but how do I link the Camlp4 Grammar module to an ocaml program? I tried the command
<Banana>
but i'm not a camlp4 guru.
<LittleDan>
Why does Camlp4 use a completely seperate parser, anyway?
<LittleDan>
From Camlp4, what am I supposed to make of the error
2004-04-15
<Dybbuk>
But only because so far I've been too lazy to learn camlp4.
<Demitar>
You can do it in camlp4 no doubt.
2004-04-13
<mfurr>
I've never mucked with the insides... using camlp4 to alter the grammar isn't too bad
2004-04-11
* mfurr
invisions a probablistic camlp4
<reltuk>
I suppose you could make one with camlp4
2004-04-09
<Demitar>
Or ask someone if camlp4 can do this.
<Demitar>
However camlp4 might have some extensions to build the functions you want automagically.
2004-03-15
* ptolomy
reads more on this camlp4
2004-03-14
<LordJ|m>
i was adding -I +camlp4 and so on
2004-03-12
<Hadaka>
drworm: you can use it through camlp4 extension - and you can convert between normal syntax and revised syntax
2004-02-21
<karryall>
there's just q_MLast with camlp4
<karryall>
or you can use camlp4 printer
<karryall>
hum, nothing: camlp4 need just have loaded the q_MLast extension
2004-02-17
<whee>
there's probably a way to get camlp4 to generate things to treat ints and floats equally to the programmer, but eeh
2004-02-15
<Demitar>
Nutssh, go mad with camlp4. ;-)
2004-02-12
<whee>
I would just be a dork and add another token with camlp4 that would do the casting for you
2004-02-11
<thornber>
do many people use the revised syntax provided by the camlp4 pre-processor ?
2004-02-06
<Nutssh>
camlp4 for the parse tree and codewalk it? (don't ask me how)
2004-02-04
<pattern>
also you could ask on the list or email camlp4's author
<pattern>
i'm sure someone here knows camlp4 and can answer your question
<pattern>
it won't be camlp4, but it'll work
<pattern>
i'm sure it must be possible in camlp4... but i don't know camlp4, so i thought i'd offer a thoroughly unhelpful suggestion :)
<stepcut>
It seems like I can do it with camlp4, but I am missing something...
<pattern>
i haven't even looked at camlp4's syntax, so i don't know
<Riastradh>
Can you think of a better way to simplify camlp4 but to simplify what it deals with, i.e. OCaml syntax?
<Riastradh>
pattern, if camlp4 were easier to use, do you suppose more people would use it?
<pattern>
i'm not defending camlp4
<Nutssh>
camlp4.
<Riastradh>
Nutssh, on Scheme48 or on camlp4?
<pattern>
and camlp4 isn't ocaml
<Riastradh>
pattern, syntax causes cancer of the semicolon. You don't _need_ all that lexical syntax that OCaml has. Look at a sufficiently complicated camlp4 macro to see what trouble it causes.
<haroldo>
Riastradh, ok. And why do you think that camlp4 is even worse?
<Riastradh>
Gross and problematic as DEFMACRO is, it's a _lot_ nicer than camlp4.
2004-01-29
<async>
well camlp4 makes the stream syntax similar to lists
<blueshoe>
i hear camlp4 is pretty hairy, though... and almost no one ever uses it
<blueshoe>
yeah, camlp4 is something i haven't even looked in to yet
<async>
well yeah... but stuff like camlp4 and polymorphic variants and stuff
2004-01-28
<cleverdra>
but anyway, please take a moment to consider camlp4.
2004-01-24
<blueshoe>
or one of the values could be a string containing the entire source to ocaml, and the other the source to camlp4
2004-01-20
<karryall>
then you can use camlp4 streams
2004-01-18
<Nutssh>
How does camlp4 work? THe docs I saw were inscrutible.
<ayrnieu>
you can play with such implementations in O'Caml just fine, of course =) You can even get a nice syntax for them through camlp4
<async>
Riastradh: i have read the manual, but i cannot find anything about how to append camlp4 streams
<Riastradh>
You can use camlp4.
2003-12-29
<codeburnt>
patten guards seem to be the prob with camlp4
<codeburnt>
it doesn't work with camlp4 loaded. It works with straight ocaml
<codeburnt>
I'm having a problem with camlp4
2003-12-28
<drWorm>
what's camlp4 anyway? i don't have it
<phubuh>
could type classes or something equivalent be implemented conveniently with camlp4?
<Riastradh>
Actually, you don't even need them. All you need is camlp4, or manual typeclass transformation.
2003-12-11
<Demitar>
And if the syntactic advantage is all you want go use camlp4. ;-)
2003-11-25
<Defcon7>
camlp4 - Pre-Precessor-Pretty-Printer for OCaml
2003-11-24
<Herrchen>
if not -> camlp4 and fun
<Herrchen>
hmm well at least using camlp4 I could make this automatically
<ayrnieu>
Riastradh - well, I think an s-expression syntax with camlp4 exists.
2003-11-15
<phubuh>
Ugh. I like the Scheme camlp4 syntax. :-)
<Riastradh>
phubuh, no, it wasn't camlp4; it's this thing called 'Haskell'...
<mellum>
Wasn't there some camlp4 magic that made them curryable?
2003-11-14
<mbh>
this program im trying to compile makes extensive use of "ocamlfind" which does not seem to be configured correctly (especially with camlp4)
2003-10-29
<krosfells>
.cmo" -I +camlp4 -c works pretty well thanks
<krosfells>
Ok i read the camlp4 doc ocamlc -pp "camlp4o pa_extend
<mellum>
try running ocaml -pp camlp4
<mellum>
krosfells: I think you need to explicitely invoke the camlp4 preprocessor
<karryall>
you have to use camlp4 to parse streams in recent ocaml version
2003-10-19
<phubuh>
Demitar, there is a camlp4 hack to do that
2003-10-13
<async>
although camlp4 was built with ocaml-3.07...
2003-10-03
<two-face>
c'est bon, ils ont publié le patch pour camlp4
2003-09-30
<arty>
It takes type output from the compiler and feeds it back to your camlp4 module. In this case, you can make a generic plus that infers types the right way.
<arty>
alright. I'm working on a type reflector for camlp4.
2003-09-29
<Riastradh>
phubuh, probably, but camlp4 is _way_way_way_ too gross for me to want to have to do anything with it.
2003-09-20
<__DL__>
(it look like a "location" that you could fine in camlp4 and ocamlc source code)
<__DL__>
you use camlp4.
2003-09-07
<whee>
it'd be tempting to try to come up with a camlp4 solution to it, so the module creation is done behind the scenes
2003-09-05
<Yurik>
Smerdyakov: well, I think because of dynamic typing and macroses, which are really powerful in adaptation language to task than camlp4
2003-08-28
<whee>
and there's camlp4 if you're into defining new constructs in your source
2003-07-18
<Riastradh>
Is there any way to write syntactic extensions to OCaml without camlp4?
2003-07-13
<stepcut>
I want to make an interpreter that can read a program written in an ML-like language from the command-line and run it. I am thinking a good way to do this might be to use camlp4 to parse the command-line into an AST, and then write code to interprete the AST. But I can't find any examples of someone doing this, so maybe its a bad idea after all?
2003-07-06
<mrvn>
As human its easy to spot the few functions you need to CPS transform. camlp4 would have a hard time there.
<chuck>
or could mebbe rig something with camlp4 to make it less to type
2003-06-27
<Riastradh>
It's probably pretty easy to write a camlp4 extension to the 'object' syntax -- 'val foo [= bar] with getter baz and setter quux' or something.
2003-06-14
<whee>
probably could add something like it with camlp4
2003-06-11
<olrion>
how to start ocaml without Camlp4
<olrion>
Camlp4 Parsing version 3.06
2003-05-22
<taw>
tried camlp4 ?
2003-05-12
<walters>
i suppose if i was hardcore i would write my own using camlp4
2003-05-11
<taw>
camlp4 is even more evil than that
<taw>
no, that's not camlp4
<Vincenz>
that's camlp4?
<taw>
printf is by camlp4??
<Riastradh>
camlp4.
2003-05-10
<phubuh>
camlp4?
<taw>
in camlp4
2003-05-07
<Riastradh>
Tail-call elimination makes 'while' and 'for' and such loops completely unnecessary to be in the core language -- they can merely be syntactic sugar with camlp4 over tail-recursive functions.
2003-04-13
<Kinners>
are there some camlp4 macros or something that generate printers for your declared types?
2003-04-03
<mattam>
it has also threads and libs support, even camlp4
2003-03-31
<stepcut>
whee: I plan on learning camlp4 in May -- I, unfortunately, have some tight deadlines for now.
<whee>
you could add infix operators easily using camlp4
<stepcut>
without using camlp4 :)
2003-03-29
<whee>
if you're talking about stream parsers that camlp4 provides
2003-03-28
<Vincenz>
it's camlp4
2003-03-17
<stepcut>
I really need to learn camlp4
* stepcut
waits for someone to say 'camlp4....'
2003-03-14
<stepcut>
I should learn camlp4 sometime
<whee>
also a quick fix with camlp4, though :)
<whee>
someone went and wrote a camlp4 extension that can do what you want, I remember seeing it on the mailing list
<stepcut>
I am not ready to learn camlp4 yet
<whee>
it's possible to automate it with camlp4, though
2003-02-28
<whee>
also looks like it's not supported in camlp4 yet :\
<whee>
I'm looking at the camlp4 parser and trying to figure out what it's doing
2003-02-25
<whee>
the same exact thing I'm doing is in the camlp4 implementation somewhere, but it won't wofk :|
<whee>
hooray, new camlp4 revision in the main cvs tree
<whee>
camlp4 really needs to be used by default, it's worth having
<pattern_>
steele, is camlp4 the stream parser, or are you talking aobut something else?
<mrvn>
So how do I use the camlp4 parser in makefiles (not OCamlMakefile)?
<whee>
I think camlp4 does a good enough job at pointing out syntax errors
<steele>
is there a camlp4 parser for the old syntax?
<mrvn>
How do you use camlp4 prser?
<whee>
that must explain why I never get odd messages, I'm always going through camlp4
<Kinners>
if you use the camlp4 parser instead you can get better messages
2003-02-24
<mellum>
palomer: you can probably have camlp4 do that
2003-02-23
<whee>
you need to use camlp4
2003-02-22
<Riastradh>
List comprehensions, for example, could probably be implemented with Camlp4.
<Riastradh>
Camlp4 is deprecated? When did this happen?
<emu>
i thought camlp4 was deprecated, what happened?
2003-02-19
<whee>
well seeing as camlp4 already does all the parsing, it couldn't be that bad
<mrvn>
And you can probably implement a non optimizing ocaml compiler with camlp4 in a day (without type inference)
<gl>
with camlp4 you can do the same :)
<mrvn>
wouldn't be hard using camlp4
2003-02-17
<whee>
those are haskell bindings, with all the fun done at compile time; you could do the same with camlp4
<whee>
camlp4, not ocamlp4 :P
2003-02-15
<phubuh>
I don't know, I'm very new to camlp4
<whee>
easiest way to learn is to read the section regarding that, and using camlp4 to translate some original to revised so you see what's different
<whee>
steele: it's about six lines of camlp4, where only 1 really does the work :)
<whee>
my old camlp4 one doesn't compile anymore
<steele>
i have a good excuse for looking at camlp4 then ;)
<whee>
I went and did haskell's composition (.) operator in camlp4 to learn it
* steele
wonders if it's hard to add `` for infix functions (like in haskell) via camlp4
<whee>
it's included with camlp4, just run it like that
<whee>
you might want to run code through camlp4 to fix it up if it's bad indentation
2003-02-14
<whee>
I've used camlp4 before, but there'd be no parsing of source involved most likely
<whee>
it'd be a major pain to do each cocoa object by hand, so I really would recommend going the camlp4 route
<whee>
haskell has one which is a full binding in a 16kb bz2, using template haskell (which we could do with camlp4)
2003-02-13
<Riastradh>
Camlp4, from what I've seen, is like LISP macros except a lot harder to use because of ML's lack of a simple syntax like LISP.
<whee>
camlp4 isn't a crappy preprocessor like c's, it can directly generate asts :)
<phubuh>
camlp4?
<whee>
you could probably add it easily with camlp4, converting that into a guard
<smkl>
mrvn: camlp4 is just syntax
2003-02-10
<whee>
reach for camlp4 :)
<whee>
mrvn: you can get the input file and location via camlp4
<whee>
well that's easily done with perhaps camlp4
2003-02-09
<whee>
haha, camlp4 at it again
2003-02-08
<listener>
Is camlp4 still active?
<whee>
there was an implementation of list comprehensions done with camlp4, but I can't find the reference
2003-02-07
<whee>
haha, daniel _did_ decide to completely stop working on camlp4
2003-02-04
<whee>
I really wish I had some idea about what was happening with camlp4 :\
2003-01-28
<whee>
lament: development on camlp4 is over
<lament>
camlp4 exists.
2003-01-27
<steele>
whee: i wouldn't say they don't wan't camlp4. They wanted to keep it included in the ocaml distribution and daniel wanted to separate it
<whee>
camlp4 is easy to learn, go for it if it helps :P
<whee>
the haskell bindings use a preprocessor much like camlp4 in its abilities
<dash>
i'd like to see how they used camlp4
<whee>
I don't know how well it'd work with this particular interface, but (for example) there's a haskell interface using template haskell (which is basically haskell's camlp4 at this point) that would generate the actual bindings at compile time
* dash
hasn't messed with camlp4 yet.
<whee>
dash: it might be worthwhile to look into using camlp4 for that
2003-01-16
<whee>
little camlp4 magic to get "blah" into a list of characters, rewrite the String model in terms of that
<whee>
I found it was easiest to learn how streams work by writing language extensions in camlp4
<whee>
the stream syntax is handled with camlp4
<whee>
did you run that through camlp4?
<whee>
I've dabbled with streams and camlp4 but that's about it
2003-01-07
<uzdav>
It feels like a kludge, IMHO, but if the camlp4 were integrated this would be a non-issue, I think.
<steele>
yeah, there is also some findlib magic for camlp4 extensions
<whee>
it'd be great if camlp4 were integrated further, but the ocaml development team doesn't like the camlp4 guy. heh
<steele>
mkcamlp4 creates camlp4 executables with almost the same options than ocamlmktop. See further.
<uzdav>
do you have to change your makefile to run camlp4, or is it automatic (like the c preprocessor?)
<whee>
use camlp4 and add it :)
<steele>
it's documented in the camlp4 reference manual
<whee>
the normal syntax isn't going anywhere, I just find the revised syntax using camlp4 is more consistant
2003-01-06
<whee>
the camlp4 developer gets a lot of flak from the core ocaml team because they don't even want to consider the syntax as an issue
<two-face>
whee: camlp4 is not ocaml :)
<whee>
two-face: that's not what camlp4 says :p
<two-face>
but implemented with camlp4
<sam_>
steele, anyway, the main issues i see as problems with caml would be.. lack of ad hoc polymorphism (be it type classes, gcaml, multimethods, ...), lack of module level recursion ("assume foo : int -> int" or something), lack of macros (or some way to extend the language nicely - yes, they have camlp4, but it's very much not integrated with the rest of the language, and the development teams internal fighting of it is pretty disturbing too), and t
2003-01-01
<whee>
perhaps camlp4 would be a good reference as well
2002-12-29
<whee>
it'd be a lot less hackish if they would just use camlp4 for handling printf
2002-12-20
<whee>
I found doing work in camlp4 helps in understanding how streams work, if that's a problem
2002-12-16
<whee>
although you can add that with camlp4, if you must have it :)
2002-12-15
<whee>
plus list comprehensions via camlp4, things like that