2012-08-26 9 views
5

JavaScriptでは、私は例えば、機能の「ソースコード」の定義を取得することができます。MIT Schemeで私の関数定義を取得するには?

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

alert(alert_Hi); 

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

MIT Schemeでこれを行うにはどうすればよいですか?

#compound-procedureなどが返ってくるのを覚えていますが、本当に欲しいのは「ソースコード」です。

答えて

6

私は怠け者だと私は `(表示機能MyFunctionを)を言いたいので、あなたがPP

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

MIT-Scheme debugging aids

+1

1本1つは受け入れられた答えでなければなりません –

4

JavaScriptは完全に解釈されるため、定義した後でも完全な関数定義があります。スキームは実際には完全には解釈されません。それは関数(と私が思ういくつかの構造体)を非可読表現にコンパイルし、初期コードを捨てます。

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

質問してもらえない場合は、実行時に定義された関数のテキスト表現が必要なのはなぜですか?代わりにまで戻って、エディタのスクロール

+0

を試みる場合があります':P –

関連する問題