From d90270a54b5a9140e4b0a9002416122ac864548c Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Tue, 28 Jul 1987 22:50:34 +0000 Subject: [PATCH] Change procedure application simulator to make unsupplied optional (and required!) arguments be unknowable. We could actually do better by making them be connected to an unassigned object but that isn't too important right now. --- v7/src/compiler/fgopt/simapp.scm | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/v7/src/compiler/fgopt/simapp.scm b/v7/src/compiler/fgopt/simapp.scm index e874b5af2..68c6a91a5 100644 --- a/v7/src/compiler/fgopt/simapp.scm +++ b/v7/src/compiler/fgopt/simapp.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/fgopt/simapp.scm,v 1.2 1987/06/30 19:50:45 cph Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/fgopt/simapp.scm,v 1.3 1987/07/28 22:50:34 cph Exp $ Copyright (c) 1987 Massachusetts Institute of Technology @@ -83,7 +83,7 @@ MIT in each case. |# (if (procedure? operator) (apply-procedure operator)) true))))) - + (define (procedure-applicator operands combination-value) (let ((number-supplied (length operands))) (lambda (procedure) @@ -99,10 +99,15 @@ MIT in each case. |# (vnode-unknowable! rest))) ((> number-supplied (+ number-required number-optional)) (warn "Too many arguments" procedure operands)))) - (for-each vnode-connect! - (append (procedure-required procedure) - (procedure-optional procedure)) - operands) + (let loop ((parameters + (append (procedure-required procedure) + (procedure-optional procedure))) + (operands operands)) + (if (not (null? parameters)) + (if (null? operands) + (for-each vnode-unknowable! parameters) + (begin (vnode-connect! (car parameters) (car operands)) + (loop (cdr parameters) (cdr operands)))))) ((vnode-connect!:vnode (procedure-value procedure)) combination-value)))) (define-integrable (vnode-connect! vnode operand) -- 2.25.1