6

JavaScript では、関数の「ソース コード」定義を取得できます。次に例を示します。

​function alert_Hi() {
    alert("Hi");
}

alert(alert_Hi);

私が入力したものを正確に返します。http://jsfiddle.net/DuCqJ/

MITスキームでこれを行うにはどうすればよいですか?

#compound-procedure返ってくるものとか見た覚えがあるんですが、本当に欲しいのは「ソースコード」です。

4

2 に答える 2

8

あなたはppを試すかもしれません

(define (display-hi) (display "Hi"))
(pp display-hi) =>
(named-lambda (display-hi)
  (display "Hi"))

MIT-Scheme デバッグ支援

于 2013-01-06T17:26:06.827 に答える
4

JavaScript は完全に解釈されるため、定義した後でも完全な関数定義が存在します。Scheme は実際には完全には解釈されません。関数 (および他のいくつかの構成体と思われます) を読み取り不能な表現にコンパイルし、最初のコードを破棄します。

おそらく、いくつかのマクロトリックを使用して、実行時に関数の初期テキスト表現を保存することができますが、これは価値があるよりも面倒だと思う傾向があります。

よろしければ、なぜ実行時に定義済み関数のテキスト表現が必要なのですか?

于 2012-08-26T15:18:57.443 に答える