Browse thread
[Caml-list] kprintf with user formatters
-
Damien
-
Pierre Weis
- Markus Mottl
-
Pierre Weis
[
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: | henri dubois-ferriere <henridf@g...> |
| Subject: | Re: [Caml-list] kprintf with user formatters |
this sounds interesting! could you point us to any available code
showing more of this in practice?
thanks
henri
On Fri, 16 Jul 2004 09:13:20 +0200, Jean-Christophe Filliatre
<jean-christophe.filliatre@lri.fr> wrote:
>
> Pierre Weis writes:
> >
> > If I understand properly:
> >
> > - you want to skip the runtime time penalty of formatting the
> > arguments to string before discarding the result,
> > - you even want not to parse the format string,
> > - ideally you also want NOT TO EVALUATE the reminding arguments of
> > your printf call ?
> >
> > Hmm, this sounds extremely lazy to me; so this suggests thunk
> > programming; hey, we have that in the language, so let's go!
> >
> > let log level thunk =
> > if may_log level then thunk ();;
> >
> > ...
> >
> > log 2 (fun () ->
> > eprintf "Argument 1 is hard to compute %d\n" (ackermann x x))
>
> I also use the same kind of trick in practice, with a little
> refinement to avoid building the closure. I introduce higher-order
> functions such as
>
> val if_debug : ('a -> unit) -> 'a -> unit
>
> which behaves like application when the debug flag is on (and does
> nothing otherwise). Then you can simply write
>
> ...
> if_debug eprintf "this is a message";
> ...
>
> I even introduce variants for functions with more than one argument to
> be able to write stuff like
>
> ...
> if_debug3 eprintf "syntax tree is %a@." print_tree t;
> ...
>
> without addition of parentheses. I still find this very convenient and
> not obtrusive as far as style is concerned.
>
> Hope this helps,
> --
> Jean-Christophe Filliâtre (http://www.lri.fr/~filliatr)
>
>
>
> -------------------
> 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
>
-------------------
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