こんにちは、小林栄@ruby修行中です。

次のようなlispもどきのスクリプトを実行すると、過去の履歴が保存されずに
怒られてしまいます。

[sakae / t515m]$ cat test.rb
loop do
  print "-> ", eval(gets), "\n"
end

[sakae / t515m]$ ruby test.rb
abc=123
-> 123
abc
test.rb:2: (eval):1: undefined local variable or method `abc' for #<Object:0x807becc> (NameError)
        from test.rb:2:in `eval'
        from test.rb:2
        from test.rb:2:in `loop'
        from test.rb:2

しかし、loop do を while TRUE に変更すると何の問題もなく、期待する動作を
してくれます。

この違いはどのように解釈したらよろしいのでしょうか?

--
E-mail:  sakae / ps.ksky.ne.jp
URL:     http://www.ksky.ne.jp/~sakae/