Use lambda-varargs? that does not depend upon ast being a lambda

This commit is contained in:
Justin Ethier 2016-08-15 18:08:55 -04:00
parent 6d3e5f041f
commit ae49a05e1e

View file

@ -91,16 +91,16 @@
(car (reverse (lambda-formals->list exp)))) ; Last arg is varargs (car (reverse (lambda-formals->list exp)))) ; Last arg is varargs
#f)) #f))
(define (lambda-varargs? exp)
(and (lambda? exp)
(or (symbol? (lambda->formals exp))
(and (pair? (lambda->formals exp))
(not (list? (lambda->formals exp)))))))
; Alternate definition:
;(define (lambda-varargs? exp) ;(define (lambda-varargs? exp)
; (let ((type (lambda-formals-type exp))) ; (and (lambda? exp)
; (or (equal? type 'args:varargs) ; (or (symbol? (lambda->formals exp))
; (equal? type 'args:fixed-with-varargs)))) ; (and (pair? (lambda->formals exp))
; (not (list? (lambda->formals exp)))))))
; Alternate definition:
(define (lambda-varargs? exp)
(let ((type (lambda-formals-type exp)))
(or (equal? type 'args:varargs)
(equal? type 'args:fixed-with-varargs))))
(define (lambda-formals-type exp) (define (lambda-formals-type exp)
(let ((args (lambda->formals exp))) (let ((args (lambda->formals exp)))