Next: expander intro bindings, Previous: expander intro macros, Up: expander intro [Index]
Throughout the code there are several references to different code evaluation times. The following library from [exp1] allows us to explore what those times mean.
(library (times-demo) (export call-time invoke-time expand-time visit-time compile-time) (import (vicare) (prefix (srfi :19) srfi.)) (define call-time (lambda () (receive-and-return (S) (srfi.date->string (srfi.current-date)) (printf "call time: ~a\n" S)))) (define invoke-time (let ((t (receive-and-return (S) (srfi.date->string (srfi.current-date)) (printf "invoke time: ~a\n" S)))) (lambda () t))) (define-syntax expand-time (lambda (stx) (receive-and-return (S) (srfi.date->string (srfi.current-date)) (printf "expand time: ~a\n" S)))) (define-syntax visit-time (let ((t (receive-and-return (S) (srfi.date->string (srfi.current-date)) (printf "visit time: ~a\n" S)))) (lambda (stx) t))) (define-syntax compile-time (lambda (stx) (let-syntax ((t (lambda (stx) (receive-and-return (S) (srfi.date->string (srfi.current-date)) (printf "compile time: ~a\n" S))))) (t)))) #| end of library |# )