;;; *** File not complete. Hacked to use 3.9 chez *** ;;; expd.s 4/9/91 ;;; C. David Boyer ;;; ;;; This file implements an expander for Chez Scheme. The only difference ;;; between this file and macrop.ss is that expand is not implemented. ;;; The file macros.ss should be loaded. ;;; ;;; (install-expander name function) ==> #unspecified ;(define install-expander ; (lambda (name expander) ; (if (symbol? name) ; (putprop name '*scheme*macro* expander) ; (error 'install-expander ; "Invalid Name or Function: ~s ~s" name expander)))) (define remove-expander (lambda (name) (remprop name '*scheme*macro*))) (define expand-top expand) ; (lambda (e) ; (if (and (pair? e) (symbol? (car e))) ; (let ((macro-expander (getprop (car e) '*scheme*macro*))) ; (if macro-expander ; (macro-expander e) ; e)) ; e))) (define expander? (lambda (x) (and (symbol? x) (getprop x '*expander*)))) ;*scheme*macro*)))) (define get-expander (lambda (e) ;*scheme*macro*))) (lambda (x y) ((getprop e '*expander*) x (lambda (x y) x)))))