JavaScript では、関数の「ソース コード」定義を取得できます。次に例を示します。
function alert_Hi() {
alert("Hi");
}
alert(alert_Hi);
私が入力したものを正確に返します。http://jsfiddle.net/DuCqJ/
MITスキームでこれを行うにはどうすればよいですか?
#compound-procedure
返ってくるものとか見た覚えがあるんですが、本当に欲しいのは「ソースコード」です。
JavaScript では、関数の「ソース コード」定義を取得できます。次に例を示します。
function alert_Hi() {
alert("Hi");
}
alert(alert_Hi);
私が入力したものを正確に返します。http://jsfiddle.net/DuCqJ/
MITスキームでこれを行うにはどうすればよいですか?
#compound-procedure
返ってくるものとか見た覚えがあるんですが、本当に欲しいのは「ソースコード」です。
あなたはppを試すかもしれません
(define (display-hi) (display "Hi"))
(pp display-hi) =>
(named-lambda (display-hi)
(display "Hi"))
JavaScript は完全に解釈されるため、定義した後でも完全な関数定義が存在します。Scheme は実際には完全には解釈されません。関数 (および他のいくつかの構成体と思われます) を読み取り不能な表現にコンパイルし、最初のコードを破棄します。
おそらく、いくつかのマクロトリックを使用して、実行時に関数の初期テキスト表現を保存することができますが、これは価値があるよりも面倒だと思う傾向があります。
よろしければ、なぜ実行時に定義済み関数のテキスト表現が必要なのですか?