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)
)
這似乎不起作用,如果它指向宏對象(真的是調度過程),我們如何正確檢查指針?
任何幫助是極大的讚賞:)
感謝您的回覆。恐怕我無法使用完整的Racket,因爲我的大學目前限制我們使用r5rs。 '宏將不幸地解決它,因爲我的所有對象都發送了'宏'?無法迴應此類查詢。 – ChewToy 2012-02-07 19:07:15
嗯。你能否讓所有的對象都支持返回構造函數的「類型」方法?你可以改變什麼限制? – dyoo 2012-02-07 19:37:13