caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: "Soegtrop, Michael" <michael.soegtrop@intel.com>
To: "caml-list@inria.fr" <caml-list@inria.fr>
Subject: [Caml-list] Question on Printf wrappers
Date: Fri, 12 Aug 2016 12:44:51 +0000	[thread overview]
Message-ID: <0F7D3B1B3C4B894D824F5B822E3E5A172CF39E46@IRSMSX102.ger.corp.intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 1429 bytes --]

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

[-- Attachment #2: Type: text/html, Size: 3742 bytes --]

             reply	other threads:[~2016-08-12 12:45 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-12 12:44 Soegtrop, Michael [this message]
2016-08-12 12:51 ` Kakadu
2016-08-12 12:55   ` Edouard Evangelisti
2016-08-12 14:01     ` Soegtrop, Michael
2016-08-12 12:53 ` Gabriel Scherer
2016-08-14  9:17 ` Richard W.M. Jones

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0F7D3B1B3C4B894D824F5B822E3E5A172CF39E46@IRSMSX102.ger.corp.intel.com \
    --to=michael.soegtrop@intel.com \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).