2016-08-05 4 views
3

R5RS言語の場合、DrRacketにはDisallow redefinition of initial bindingsをオンまたはオフにするオプションがあります。DrRacketを使用せずにR5RSの初期バインディングを再定義できるようにする

これは私に不思議だった:DrRacketを使わずにこのような言語設定を調整することは可能ですか? (例えば、コマンドラインからのRacketやEmacsを使用している場合)

もしそうなら、どちらの方法で?そうでない場合、または合理的な方法でない場合、なぜですか?

答えて

4

再定義が許可されているかどうかをパラメータcompile-enforce-module-constantsコントロール:

soegaard$ ./racket 
Welcome to Racket v6.6.0.3. 
-> (compile-enforce-module-constants #f) 
-> (module test r5rs (define + -) (display (+ 43 1)) (newline)) 
-> (require 'test) 
42 

は、ここで詳細を参照してください。http://docs.racket-lang.org/guide/module-set.html

+0

がこの作業を行い、ありがとうございます。しかし、少し詳しく説明すると、REPLでは次のような例があるので、REPLではこれらのパラメータを設定することは可能ですか? – bitrauser

+1

@bitrauserそれは不可能だと私は信じています。モジュールの展開中に、展開者はパラメータを調べて再定義が許可されているかどうかを判断します。パラメータをファイル内に配置すると、展開が行われた後にのみ有効になります。しかし、コマンドラインからもパラメータを設定することができます: 'racket -e"(compile-enforce-module-constants #f) "'。 – soegaard

関連する問題