Version française
Home     About     Download     Resources     Contact us    

This site is updated infrequently. For up-to-date information, please visit the new OCaml website at

Browse thread
[Caml-list] Printf and format
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2003-07-05 (12:07)
From: Sylvain LE GALL <sylvain.le-gall@p...>
Subject: Re: [Caml-list] Printf and format
On Sat, Jul 05, 2003 at 12:26:49PM +0200, Pierre Weis wrote:
> > Hello,
> > 
> > I am sorry to ask a so silly question, but i need it for my personnal
> > work, and i could not find it in the archive.
> > 
> > Is there a way to transform string to ( 'a, out_channel, unit, unit)
> > format. I need this function to use it with something like :
> > 
> > Printf.printf (my_fun "X, Y") "coucou";;
> > 
> > I look at the code and see a function scan_format, but it seems to be
> > forbid to use it. 
> > 
> > Any idea ?
> > 
> > Thanks
> > Sylvain LE GALL
> As once announced on this list, the new release of Objective Caml will
> introduce a lot of novelty on the format type.
> Besides new convertion specifiers that you could find in the Printf
> and Scanf documentation (C, S, B, F, !, ...), there are now several
> different new functionalities provided by the new compiler which are
> relevant to your question:
> 0) converting arbitrary format string to a regular strings
> 1) converting CONSTANT strings to the corresponding constant format string
> 2) concatenating format strings (very often feature 0 and 1 are used
> in conjonction just to implement format strings concatenation).
> Back to your problem: the features described here may your for some
> ``my_fun'' functions, but the general case is not properly covered by
> them. What we need is a general function that reads a format from
> within a string that is NOT a constant. This is a kind of dynamic
> convertion reminiscent of int_of_string or float_of_string, that
> checks that the string can be indeed considered as an integer of
> floatting point number.
> I propose (and have implemented for my own programming of a general
> translation function) a new function [read_format], such that
> [read_format pat s] returns the string [s] as a format string that has
> the same type (hence the same ``printf meaning'') as [pat], the first
> format string argument.
> For instance,
> read_format "The number %d is odd" "Le nombre %d est impair"
> returns "Le nombre %d est impair" as a format string with the same
> type as "The number %d is odd".
> This function is more general that the one above since now in
> [read_format pat s] the string [s] is not mandatorily an immediate
> string constant: it can be obtained from an arbitrary computation, as
> read from a file.
> The Typechecking of read_format would be:
> read_format :
>  ('a, 'b, 'c, 'd) format -> string -> ('a, 'b, 'c, 'd) format
> If considered useful, this function could be added, for instance as
> part of a new internationalization module.


you read my mind. Indeed, the question concern an internationalization
module ( let's call libgettext-ocaml ). It is basically a binding of

But, for handling certain apsect of gettext it needs printf like
capability. But the printf like capibility, as printf, use a non constant
string ( returned by a function dngettext... or so ). That's the reason
why i am looking after something which correpsond to this things.

If people at INRIA could include some kind of read_format, it could be
very useful.

Thanks a lot
Sylvain LE GALL

To unsubscribe, mail Archives:
Bug reports: FAQ:
Beginner's list: