Subscribed unsubscribe Subscribe Subscribe

【質問】scalaアクターのself.receive がREPLでブロックされちゃう件について

Scala
// sample1.scala
import scala.actors.Actor._

self ! "Hello"
self.receive { case x => println(x) }

sample1.scala

 $ scala sample1.scala

として実行すると Hello という結果が得られるわけですが、
これをREPLで読み込ませると receive のとこでブロックされてしまいます。
コップ本にも同様の例が載っていて(30.3)、そこではちゃんと結果が返ってきています。

...receiveWithin という receive の変種を使った方がよい。
これを使うと、ミリ秒単位でタイムアウトを指定できる。
対話的シェルで receive を使うと、 receive はメッセージが届くまでシェルをブロックする。
self.receive の場合、永遠に待つことになってしまう。

という記述がありますが、 sample1.scala の場合、 すでにカレントスレッドに対して "Hello" というメッセージを送っています。
なのになぜブロックされるんだろう?送っているけど届いてないってこと?