~ chicken-r7rs (master) /scheme.r5rs.scm


 1(module scheme.r5rs ()
 2  (import (rename scheme
 3                  (null-environment %null-environment)
 4                  (scheme-report-environment %scheme-report-environment)))
 5  (import chicken.base chicken.module chicken.syntax chicken.type)
 6  (import scheme.eval)
 7
 8  (export angle make-polar make-rectangular rationalize)
 9  (export null-environment scheme-report-environment)
10
11  (reexport
12    (except scheme
13            null-environment scheme-report-environment eval
14            and begin case cond define define-syntax delay do
15            if lambda let let* let-syntax letrec letrec-syntax
16            or quasiquote quote set! syntax-rules))
17
18  (define-constant null-environment-identifiers
19    '(and begin case cond cond-expand define define-syntax delay
20      delay-force do if lambda let let* let-syntax letrec letrec*
21      letrec-syntax or quasiquote quote set! syntax-rules))
22
23  (: null-environment (fixnum -> (struct environment)))
24
25  (define (null-environment version)
26    (case version
27      ((7)  (environment `(only (scheme base) ,@null-environment-identifiers)))
28      ((5)  (environment `(only (scheme r5rs) ,@null-environment-identifiers)))
29      (else (%null-environment version))))
30
31  (: scheme-report-environment (fixnum -> (struct environment)))
32
33  (define (scheme-report-environment version)
34    (case version
35      ((7)  (environment '(scheme base)))
36      ((5)  (environment '(scheme r5rs)))
37      (else (%scheme-report-environment version)))))
Trap