0
私たちはスキームバージョンr5rsを使用して、ポインターを指しているタイプのプロシージャーポインターを調べようとしています。タイプのプロシージャ参照を確認していますか?
我々が使用してオブジェクトを作成しました:
(define (%macro name exp env)
(define (set-exp new_exp) (set! exp new_exp))
(define (set-env new_env) (set! env new_env))
(define (set-name new_name) (set! name new_name))
(define (%dispatch call)
(cond
((eq? call 'get-exp) exp)
((eq? call 'get-env) env)
((eq? call 'get-name) name)
((eq? call 'set-exp) set-exp)
((eq? call 'set-env) set-env)
((eq? call 'set-name) set-name)
))
%dispatch
)
我々は、それがコードの別の部分にディスパッチ関数を指すかどうかを判断するための手順の参照を確認したい:
(define (macro? exp)
(eq? %macro exp)
)
これは動作していないようですが、マクロオブジェクト(実際にはディスパッチプロシージャ)を指している場合、ポインタを正しくチェックするにはどうすればいいですか?
すべてのヘルプは大歓迎です:)
ご返信ありがとうございます。私の大学は現在、私たちにr5rsの使用を制限しているので、私は完全なラケットを使用することはできません。すべてのオブジェクトが "マクロ"を送信したので、マクロは不幸にも解決しませんでした。そのようなクエリには応答できません。 – ChewToy
Hmmm。すべてのオブジェクトでコンストラクタを返す "type"メソッドをサポートできますか?変更できるものにはどのような制限がありますか? – dyoo