次のようなプログラムがあるとします。
(define (foo x)
(local
((define y (- x 1)))
(* x y)))
(foo 3)
任意のステートメントを実行して x と y の値を調べたり (場合によっては変更したり) できるように、3 行目と 4 行目の間で REPL を開くことができるようにしたいと考えています。
Ruby でこれを行うには、同等のプログラムを使用します。
def foo(x)
lambda {
y = x - 1
x * y
}.call
end
puts (foo 3)
pry の呼び出しを追加して変更し、適切なスコープの repl を必要な場所に提供します。
require 'pry'
def foo(x)
lambda {
y = x - 1
binding.pry
x * y
}.call
end
puts (foo 3)
js でこれを行うには、このプログラムを Firebug の下で実行し、4 行目にブレークポイントを配置します。
foo = function(x) {
return (function(){
var y = x - 1;
return x * y;
})();
};
console.log(foo(3));
そして、評価ウィンドウで何かを調べることができました。
Racket でこれを取得するためにできることはありますか? 私が見つけた最も近いのは DrScheme のデバッガーですが、それは現在のスコープのすべての値を表示するだけで、私が見る限り、REPL でそれらを探索することはできません。