[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Adam P. Jenkins <ajenkins@c...> |
| Subject: | print and output |
Michel Levy writes: > 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 > val read_int : unit -> int > Flush standart output then ... > > Quand j'ecris le "programme" suivant : > output_string ">>"; read_int ();; > l'impression a lieu avant la lecture, ce qui est heureux. > > Pourquoi cette diffence, car je pensais que : > print_string = output_string stdout > > Hi > > When I write (in OCAML) the following program : > print_string ">>"; read_int ();; > the reading takes place before the printing, what surprises me. > > On the contrary, when I write : > output_string ">>"; read_int ();; > the printing takes place before the reading, what is better. > > Why this difference, whereas I thought that : > print_string = output_string stdout > > > Michel Levy > D106 - Laboratoire LSR > B.P.72 - 38402 SAINT MARTIN D'HERES CEDEX - France > Tel : 0476827246 > e.mail : Michel.Levy@imag.fr > > > > That is kind of strange, since print_string is implemented with output_string. Maybe it just had to do with the order in which you executed the commands, i.e. when the stdout buffer became full. > cd /usr/local/lib/ocaml > grep print_string pervasives.ml let print_string s = output_string stdout s To make the printing happen first in either case, you can add "flush stdout;". print_string ">>"; flush stdout; read_int ();; Adam