Browse thread
[Caml-list] Camlp4: generating printers of types
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Ken Rose <kenarose@e...> |
| Subject: | Re: [Caml-list] Camlp4: generating printers of types |
Daniel de Rauglaudre wrote: > > Hi everybody, > > In Camlp4 tutorial (current version), I added a section explaining how > to make a syntax extension which, when loaded, automatically generates > printers of all your types: > > For example, if your input file contains: > > type colour = Red | Green | Blue > > this will be interpreted like this: > > type colour = Red | Green | Blue > let print_colour = > function > Red -> print_string "Red" > | Green -> print_string "Green" > | Blue -> print_string "Blue" I've been working on extending this to more general types, which I suppose would be easy for someone who's had some practice with camlp4. I'm running into 2 problems, and anticipating a third one. 1. Is there a clean way to handle (sum) types with constructors with multiple module qualifications? I hacked the example to deal with Foo.bar, but it doesn't seem to extend automatically to Foo.Bar.baz. As I understand it, I'd need a new pattern for each additional uid. 2. How are tuples represented in camlp4's syntax? This is so I can match them when analyzing a type. 3. This is the big one. When working on a type like: type t = int with the obvious extention to Daniel's code, the preprocessor produces type t = int let rec print_t = print_int Which the compiler rejects with "This kind of expression is not allowed as right-hand side of `let rec'" I haven't been able to figure out a way to sneak it past, either. What's going on here? Why can't I rename print_int? Thanks - ken ------------------- 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