caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* Implémentation de printf
@ 1998-08-06 10:32 Alain Frisch
  1998-08-19 15:54 ` Xavier Leroy
  0 siblings, 1 reply; 2+ messages in thread
From: Alain Frisch @ 1998-08-06 10:32 UTC (permalink / raw)
  To: caml-list

Bonjour à tous,

je cherche à créer une fonction du genre :

let affiche format arg = mon_affichage (sprintf format arg);;

mais qui accepte des formats avec plusieurs paramètres. Est-ce
possible (j'utilise Caml Light 0.7).

D'autre part, en consultant le code source de printf (version 0.6),
il me vient quelques questions : que sont les fonctions magic,
is_block, repr, obj_tag ?
Est-il possible de créer soi même une fonction du style printf
(ie:  nombre et type d'arguments variable suivant la valeur d'un
paramètre) ?

Merci.


Alain FRISCH
alfie2@mygale.org
yala.frisch@wanadoo.fr
http://www.mygale.org/05/alfie2/
ICQ#:16299088





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

* Re: Implémentation de printf
  1998-08-06 10:32 Implémentation de printf Alain Frisch
@ 1998-08-19 15:54 ` Xavier Leroy
  0 siblings, 0 replies; 2+ messages in thread
From: Xavier Leroy @ 1998-08-19 15:54 UTC (permalink / raw)
  To: Alain Frisch, caml-list

> je cherche à créer une fonction du genre :
> let affiche format arg = mon_affichage (sprintf format arg);;
> mais qui accepte des formats avec plusieurs paramètres. Est-ce
> possible (j'utilise Caml Light 0.7).

Non, ce n'est pas possible.  Étant donné la manière dont les fonctions
*printf consomment leurs arguments, on peut définir une fonction qui
fait quelque chose avant d'appeler printf:

    let affiche format = print_string "**mon prefixe**"; printf format

mais il n'est pas possible de reprendre la main après que printf a
consommé ses arguments.

> D'autre part, en consultant le code source de printf (version 0.6),
> il me vient quelques questions : que sont les fonctions magic, 
> is_block, repr, obj_tag ?

Des primitives de très bas niveau permettant d'accéder directement aux
représentations des structures de données Caml et de contourner le
typage statique strict.  Les utiliser nécessite une compréhension en
profondeur du runtime et du compilateur Caml.  Je ne saurais trop vous
dissuader de vous en servir!

> Est-il possible de créer soi même une fonction du style printf
> (ie:  nombre et type d'arguments variable suivant la valeur d'un 
> paramètre) ?

En restant dans la partie "bien typée" du langage, c'est difficile.
Cependant, vous pouvez regarder le printf d'Olivier Danvy
("Functional Unparsing", http://www.brics.dk/RS/98/Ref/BRICS-RS-98-Ref/BRICS-RS-98-Ref.html#BRICS-RS-98-12).

- Xavier Leroy





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

end of thread, other threads:[~1998-08-19 23:50 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1998-08-06 10:32 Implémentation de printf Alain Frisch
1998-08-19 15:54 ` Xavier Leroy

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).