Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
* Format.sprintf and "%a"
@ 2000-11-23 11:54 jim.rauser
  2000-11-23 12:42 ` Pierre Weis
  0 siblings, 1 reply; 2+ messages in thread
From: jim.rauser @ 2000-11-23 11:54 UTC (permalink / raw)
  To: caml-list

Hello,

I'm teaching myself Ocaml and have run up against a problem I can't
solve in connection with the format module.  For many of the types
in my code, I have defined pretty-printing functions with type
(Format.formatter -> <type> -> unit), e.g.,

  type foo = Foo | Bar
  let fmt_foo f x =
    match x with
      Foo -> Format.fprintf f "Foo"
    | Bar -> Format.fprintf f "Bar"
  in
  Format.printf "Test: %a@." fmt_foo Foo

Works great, but when I try it with sprintf, I get the following:

  let s = Format.sprintf "Test: %a@." fmt_foo Foo
  This expression has type
    ((Format.formatter -> foo -> unit) -> foo -> unit,
     Format.formatter, unit)
    format
  but is here used with type
    ((Format.formatter -> foo -> unit) -> foo -> unit,
     unit, string)
    format

[Note: I retyped these examples by hand, I hope they're accurate.]

I can see the correlation of the signatures in the error message to
those of fprintf and sprintf in Format.mli, but the type magic that
seems to be occuring in the implementation of the Format modules
is beyond me.  Can someone explain what is going on here?  Is
there a way to use my formatting functions with sprintf?

Thanks, Jim

------------------------------------------------------------------------
Jim Rauser                                      mailto:rauser@qcentic.de
Qcentic GmbH
Max-Planck-Str. 39a                                 Tel: 02234/950 36 16
D-50858 Koeln                                        Fax: 02234/27 19 17



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2000-11-23 12:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2000-11-23 11:54 Format.sprintf and "%a" jim.rauser
2000-11-23 12:42 ` Pierre Weis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox