English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
[Caml-list] camlp4: pretty printing not to a file
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2002-09-06 (01:36)
From: Daniel de Rauglaudre <daniel.de_rauglaudre@i...>
Subject: Re: [Caml-list] camlp4: pretty printing not to a file

On Thu, Sep 05, 2002 at 12:29:23PM -0400, jehenrik wrote:

> Thanks for the response, this seems to be what I am looking for, but the 
> code snippet you sent does not work for me.  I'm running ocaml+camlp4 
> 3.04

Indeed your code does not work in the latest version 3.06, because
the interface of Spretty has changed. Spretty is not documented because
it is likely to change and you use it with your own risks.

The message you get:

> print_expr2 r;;
> <pr_fun: not impl: expr; tag = 14>- : string = ""

is an error from me, I am sorry. Not a bug, but an error in the
message. I changed it in my current version and now the message
will be:

  print_expr2 r;;
  Exception: Failure "no loaded printer for expr".

indicating that you need to load a printer. Do:
   #load "pr_o.cmo";;

to get a printing module (or pr_r.cmo if you want to pretty print
in revised syntax).

>    Spretty.print_pretty Format.print_char Format.print_string
>      Format.print_flush "" "" 78
>      (fun (_,_) -> ())  (pr.pr_fun "top" x "" [<>]);

Mmmm... I see that this code has been borrowed from the module Pcaml
of Camlp4. But I am not sure of my code, in particular the use of
"Format" because Spretty has its own pretty printing features which
does not use Format. I have to look at that.

And in version 3.06, because of interface change, this code does not
work any more. Write it as:

   Spretty.print_pretty Format.print_char Format.print_string
     Format.print_flush "" "" 78
     (fun _ _ -> "", 0, 0, 0)  0 (pr_fun "top" x "" [<>]);

But I repeat that this code is not documented and you use it at
your own risks.

Well, since I see that people would like to use the Camlp4 pretty
printing like that, I am going to see how I could propose that with
a good interface and without these hacks. In the meantime, you can ask
me for hints.

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