Re: print and output

From: Pierre Weis (Pierre.Weis@inria.fr)
Date: Thu Jul 03 1997 - 09:54:29 MET DST


From: Pierre Weis <Pierre.Weis@inria.fr>
Message-Id: <199707030754.JAA21557@pauillac.inria.fr>
Subject: Re: print and output
In-Reply-To: <v01530501afde7af99a9d@[129.88.38.40]> from Michel Levy at "Jul 1, 97 10:43:09 am"
To: Michel.Levy@imag.fr (Michel Levy)
Date: Thu, 3 Jul 1997 09:54:29 +0200 (MET DST)

Bonjour,

> Quand j'ecris (en Ocaml) le "programme" suivant :
> print_string ">>"; read_int ();;
> l'impression a lieu apres la lecture, ce qui me surprend, car il est dit

J'ai essaye' vos diffe'rentes versions, et toutes marchaient comme
vous vous y attendez. Je pense que votre proble`me vient peut-e^tre du
fait que vous utilisez la bibliothe`que Format. En ce cas, il y a un
retard a` l'impression car il faut attendre le mate'riel d'impression
pour pouvoir imprimer correctement. Si vous avez effectivement fait
open Format, il vous faut vider la queue d'impression avec
print_flush. E'crivez:

         print_string ">>"; print_flush (); read_int ();;

Ou bien appelez directement la primitive de base:

         Pervasives.print_string ">>"; read_int ();;

> Hi
>
> When I write (in OCAML) the following program :
> print_string ">>"; read_int ();;
> the reading takes place before the printing, what surprises me.

I tried your programs and they work fine, as you expect them to
work. My guess is that you don't use the basic print_string function,
but the one of the Format library module. That may be the case if you
have already open the Format module. In that case, you need to
flush the formatting queue with print_flush. You may write

         print_string ">>"; print_flush (); read_int ();;

Alternatively, you may directly call the standard primitive with:

         Pervasives.print_string ">>"; read_int ();;

Pierre Weis

INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis/



This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:11 MET