;; Utilities for timing macro expansion. ;; Copyright (c) 2007 David Van Horn ;; Licensed under the Academic Free License version 3.0 ;; <dvanhorn@cs.brandeis.edu> (module time-expand mzscheme (provide time-expand time-expand-invoke) (define-syntax (time-expand stx) (with-syntax (((_ exp) stx)) (time (local-expand (syntax exp) (syntax-local-context) '())))) (define-syntax (time-expand-invoke stx) (with-syntax (((_ exp) stx)) (let-values (((res cpu real gc) (time-apply local-expand (list (syntax exp) (syntax-local-context) '())))) (with-syntax (((res) res) (cpu cpu) (real real) (gc gc)) (syntax (values res cpu real gc)))))) ) ; end of module time-expand.