(define-library (csc ir2) (export lambda-body lambda-case-alternate lambda-case-arguments lambda-case-body lambda-case-gensyms lambda-case-rest lambda-case? make-lambda-case ; Re-exports from IR1. call-arguments call-procedure call? constant-expression constant? if-alternate if-consequent if-test if? lambda? make-call make-constant make-if make-lambda make-sequence make-toplevel-define make-toplevel-ref make-void sequence-head sequence-tail sequence? toplevel-define-expression toplevel-define-name toplevel-define? toplevel-ref-name toplevel-ref? void?) (import (scheme base) (only (csc ir1) call-arguments call-procedure call? constant-expression constant? if-alternate if-consequent if-test if? lambda-body lambda? make-call make-constant make-if make-lambda make-sequence make-toplevel-define make-void sequence-head sequence-tail sequence? toplevel-define-expression toplevel-define-name toplevel-define? void?)) (begin ; This library defines the intermediate representation IR2. ; It's CPS time bitch. ; (define-record-type (make-variable k var ; idx ; Reference to a variable by index in the closure. (define-record-type (make-closure-ref idx) closure-ref? (idx closure-ref-index)) ; arguments rest