Gaucheの入出力の順番について

(display "please input: ")
(let ((m (read)))
  (display "your input is ")
  (display m))

このようなコードがあった場合、以下のような順番の入出力になるように見えますし、実際に多くのScheme処理系ではこのような実行結果になります。

please input: hoge
your input is hoge

ところがGaucheでは以下のような順番になります。最初の入力プロンプトが表示されず、入力後に入力プロンプトと結果のメッセージがまとめて出力されます。

hoge
please input: your input is hoge

恥ずかしながら、この問題にずっと悩まされてきました。例えば、FLTVの発表でのGaucheによるデモでは、メッセージの表示の順番がおかしいままデモしたりしていました。
でも、これが不具合ならGaucheが実用的なプログラムで使われるわけはないし、単なる解釈の問題だという話を読んだ記憶もうっすらとあったり。そこで、Schemeコードバトンを機会にがんばってググってみました。
で、見つけたのがこれ↓
http://www.shido.info/gb/guestbook.php?id=1823
バッファリングの問題なんですね。これを防ぐには出力バッファの内容を強制出力するためにGaucheが用意しているflushを使えばOK。つまり、上のプログラムはこのように書き換えれば意図通りに動きます。

(display "please input: ")
(flush)
(let ((m (read)))
  (display "your input is ")
  (display m))

おそらくGaucheを使っている人には常識なんだろうなーと思いつつ、同じ問題で悩んでいる人向けに書いておきます。