#| -*-Scheme-*-
-$Id: closconv.scm,v 1.1 1994/11/19 02:04:29 adams Exp $
+$Id: closconv.scm,v 1.2 1994/11/22 03:48:40 adams Exp $
Copyright (c) 1994 Massachusetts Institute of Technology
(set-closconv/env/form! env* expr*)
(values expr* env*)))
+(define (closconv/lambda** context env lam-expr)
+ ;; (values expr* env*)
+ (call-with-values
+ (lambda ()
+ (closconv/lambda* context
+ env
+ (lambda/formals lam-expr)
+ (lambda/body lam-expr)))
+ (lambda (expr* env*)
+ (values (closconv/remember expr* lam-expr)
+ env*))))
+
(define (closconv/bindings env* env bindings)
;; ENV* is the environment to which the bindings are being added
;; ENV is the environment in which the form part of the binding is
(closconv/expr env value)
(call-with-values
(lambda ()
- (closconv/lambda* 'DYNAMIC ; bindings are dynamic
- env
- (cadr value) ; lambda list
- (caddr value))) ; body
+ (closconv/lambda** 'DYNAMIC ; bindings are dynamic
+ env
+ value))
(lambda (value* env**)
(let ((binding
(or (closconv/binding/find (closconv/env/bound env*)
#| -*-Scheme-*-
-$Id: cpsconv.scm,v 1.1 1994/11/19 02:04:29 adams Exp $
+$Id: cpsconv.scm,v 1.2 1994/11/22 03:48:51 adams Exp $
Copyright (c) 1994 Massachusetts Institute of Technology
(declare (usual-integrations))
\f
(define (cpsconv/top-level program)
- (let ((name (new-continuation-variable)))
- `(LET ((,name (CALL (QUOTE ,%fetch-continuation) (QUOTE #F))))
- ,(cpsconv/expr (cpsconv/named-continuation name)
- program))))
+ (let* ((name (new-continuation-variable))
+ (program*
+ `(LET ((,name (CALL (QUOTE ,%fetch-continuation) (QUOTE #F))))
+ ,(cpsconv/expr (cpsconv/named-continuation name)
+ program))))
+ (cpsconv/remember program* program)))
(define-macro (define-cps-converter keyword bindings . body)
(let ((proc-name (symbol-append 'CPSCONV/ keyword)))
`(LETREC ,(lmap (lambda (binding)
(let ((value (cadr binding)))
(list (car binding)
- (cpsconv/lambda* (cadr value) (caddr value)))))
+ (cpsconv/lambda** value))))
bindings)
,(cpsconv/expr cont body)))
`(LAMBDA ,lambda-list
,(cpsconv/expr (cpsconv/named-continuation (car lambda-list))
body)))
+
+(define (cpsconv/lambda** lam-expr)
+ (cpsconv/remember (cpsconv/lambda* (lambda/formals lam-expr)
+ (lambda/body lam-expr))
+ lam-expr))
\f
#|
(define-cps-converter CALL (cont rator orig-cont #!rest rands)
#| -*-Scheme-*-
-$Id: inlate.scm,v 1.1 1994/11/19 02:04:29 adams Exp $
+$Id: inlate.scm,v 1.2 1994/11/22 03:49:09 adams Exp $
Copyright (c) 1994 Massachusetts Institute of Technology
(list `(DECLARE ,@decls)
body)))))))
(inlate/remember new
- (new-dbg-procedure/make form lambda-list))))))
-
+ (new-dbg-procedure/make
+ form
+ (cons name lambda-list)))))))
+#|
(define (inlate/lambda* name req opt rest aux decls sbody)
name ; ignored
`(LAMBDA ,(append (cons (new-continuation-variable) req)
(beginnify
(list `(DECLARE ,@decls)
body))))))
+|#
\f
(define-inlator IN-PACKAGE (environment expression)
`(IN-PACKAGE ,(inlate/scode environment)