From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.1 required=5.0 tests=AWL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id 45E28BBAF for ; Thu, 26 Mar 2009 18:37:36 +0100 (CET) X-IronPort-AV: E=Sophos;i="4.38,426,1233529200"; d="scan'208";a="23335862" Received: from arvin.irisa.fr (HELO [131.254.11.86]) ([131.254.11.86]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 26 Mar 2009 18:37:36 +0100 Message-ID: <49CBBD51.5090005@irisa.fr> Date: Thu, 26 Mar 2009 18:37:21 +0100 From: Tiphaine Turpin User-Agent: Thunderbird 2.0.0.19 (X11/20090216) MIME-Version: 1.0 To: =?UTF-8?B?SsOpcsOpbWllIERpbWlubw==?= Cc: caml-list@yquem.inria.fr Subject: Re: [Caml-list] printf "%a" vs sprintf "%a" References: <49CBB2F4.6000000@irisa.fr> <1238088594.8677.26.camel@localhost.localdomain> In-Reply-To: <1238088594.8677.26.camel@localhost.localdomain> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam: no; 0.00; irisa:01 printf:01 sprintf:01 sprintf:01 printf:01 foo:01 foo:01 val:01 cheers:01 beginner's:01 ocaml:01 bug:01 beginners:01 wrote:01 caml-list:01 Thanks for the replies. sprintf2 is just fine for me. Tiphaine Jérémie Dimino a écrit : > Tiphaine Turpin wrote: > >> has type string. But %a breaks this rule. Wouldn't it be simpler to have >> two separate directives which accept respectively string printers and >> channel printers, regardless of the outer printing function ? >> > > Note that you can do it with batteries and the new printf. > > The default "%a" directive always uses a channel printer: > > # Print.printf p"%a";; > - : (unit Batteries.IO.output -> '_a -> unit) -> '_a -> unit = > # Print.sprintf p"%a";; > - : (unit Batteries.IO.output -> '_a -> unit) -> '_a -> string = > > And you can define a "%foo" directive which always uses a string printer: > > # let printer_foo k f x = k (fun out -> String.print out (f x));; > val printer_as : (('a Batteries.IO.output -> unit) -> 'b) -> ('c -> string) -> 'c -> 'b = > # Print.printf p"%foo";; > - : ('_a -> string) -> '_a -> unit = > # Print.sprintf p"%foo";; > - : ('_a -> string) -> '_a -> string = > > Cheers, > Jérémie > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > >