Relocated functions

This commit is contained in:
Justin Ethier 2017-11-27 17:43:44 -05:00
parent 957672fe70
commit eac413a2f5
2 changed files with 22 additions and 22 deletions

View file

@ -67,8 +67,6 @@
app->args
precompute-prim-app?
begin->exps
define-lambda?
define->lambda
closure?
closure->lam
closure->env
@ -411,26 +409,6 @@
(define (begin->exps exp)
(cdr exp))
(define (define-lambda? exp)
(let ((var (cadr exp)))
(or
;; Standard function
(and (list? var)
(> (length var) 0)
(symbol? (car var)))
;; Varargs function
(and (pair? var)
(symbol? (car var))))))
(define (define->lambda exp)
(cond
((define-lambda? exp)
(let ((var (caadr exp))
(args (cdadr exp))
(body (cddr exp)))
`(define ,var (lambda ,args ,@body))))
(else exp)))
; closure? : exp -> boolean
(define (closure? exp)
(tagged-list? 'closure exp))

View file

@ -20,6 +20,8 @@
begin?
lambda?
pair->list
define-lambda?
define->lambda
formals->list
lambda-formals->list
lambda-varargs?
@ -250,6 +252,26 @@
(cons lst '())
(cons (car lst) (loop (cdr lst))))))
(define (define-lambda? exp)
(let ((var (cadr exp)))
(or
;; Standard function
(and (list? var)
(> (length var) 0)
(symbol? (car var)))
;; Varargs function
(and (pair? var)
(symbol? (car var))))))
(define (define->lambda exp)
(cond
((define-lambda? exp)
(let ((var (caadr exp))
(args (cdadr exp))
(body (cddr exp)))
`(define ,var (lambda ,args ,@body))))
(else exp)))
; lambda->formals : lambda-exp -> list[symbol]
(define (lambda->formals exp)
(cadr exp))