(close-port port) (compile ((or (language-joiner joint) (default-language-joiner joint)) (reverse exps) env) #:from joint #:to to ;; env can be false if no expressions were read. #:env (or env (default-environment joint)) #:opts opts)) (else ;; compile-fold instead of compile so we get the env too (receive (jexp jenv jcenv) (compile-fold (compile-passes (current-language) joint opts) x cenv opts) (lp (cons jexp exps) jenv jcenv)))))))))) (define* (compile x #:key (from (current-language)) (to 'value) (env (default-environment from)) (opts '())) (let ((warnings (memq #:warnings opts))) (if (pair? warnings) (let ((warnings (cadr warnings))) ;; Sanity-check the requested warnings. (for-each (lambda (w) (or (lookup-warning-type w) (warning 'unsupported-warning #f w))) warnings)))) (receive (exp env cenv) (compile-fold (compile-passes from to opts) x env opts) exp))