You may also consider this:

let prefixprint oc fmt = Printf.fprintf oc ("Prefix: " ^^ fmt)

Best regards,
Edouard


2016-08-12 13:51 GMT+01:00 Kakadu <kakadu.hafanana@gmail.com>:
Micheal,

Something lke this?

let printfn fmt = kprintf (printf "%s\n") fmt

Happy hacking,
Kakadu

On Fri, Aug 12, 2016 at 3:44 PM, Soegtrop, Michael
<michael.soegtrop@intel.com> wrote:
> Dear Ocaml Users,
>
>
>
> it is quite common to have wrappers for printf to e.g. print errors or
> warnings with some context. Prefixing is easy to do in OCaml (honestly it
> took me a short while to figure it out):
>
>
>
> let prefixprintf (oc : out_channel) (fmt : ('a, out_channel, unit) format) :
> 'a =
>
>   Printf.fprintf oc "Prefix: ";
>
>   Printf.fprintf oc fmt
>
> ;;
>
>
>
> I wonder how I would postfix something. Even converting the formatted output
> first to a string and then output it together with the postfix doesn’t seem
> to be easy, because the formatting function must be the last call in the
> function, since it has to produce the returned function. Is there some way
> to make a variadic lambda expression or some other magic to handle such
> cases? A similar question would be how I can print the same formatted string
> twice.
>
>
>
> I don’t have an application for this, I ask this out of pure OCaml
> curiosity. So I am not so much interested in workarounds, more in an answer
> to the question how I can return a function of type ‘a without more or less
> directly calling some variant of printf.
>
>
>
> Best regards,
>
>
>
> Michael
>
>
>
> Intel Deutschland GmbH
> Registered Address: Am Campeon 10-12, 85579 Neubiberg, Germany
> Tel: +49 89 99 8853-0, www.intel.de
> Managing Directors: Christin Eisenschmid, Christian Lamprechter
> Chairperson of the Supervisory Board: Nicole Lau
> Registered Office: Munich
> Commercial Register: Amtsgericht Muenchen HRB 186928

--
Caml-list mailing list.  Subscription management and archives:
https://sympa.inria.fr/sympa/arc/caml-list
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs



--
Edouard Evangelisti
Post doctoral Research Associate
Sainsbury Laboratory, Cambridge University (SLCU)
Bateman Street
Cambridge CB2 1LR (United Kingdom)