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 app->args
precompute-prim-app? precompute-prim-app?
begin->exps begin->exps
define-lambda?
define->lambda
closure? closure?
closure->lam closure->lam
closure->env closure->env
@ -411,26 +409,6 @@
(define (begin->exps exp) (define (begin->exps exp)
(cdr 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 ; closure? : exp -> boolean
(define (closure? exp) (define (closure? exp)
(tagged-list? 'closure exp)) (tagged-list? 'closure exp))

View file

@ -20,6 +20,8 @@
begin? begin?
lambda? lambda?
pair->list pair->list
define-lambda?
define->lambda
formals->list formals->list
lambda-formals->list lambda-formals->list
lambda-varargs? lambda-varargs?
@ -250,6 +252,26 @@
(cons lst '()) (cons lst '())
(cons (car lst) (loop (cdr 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] ; lambda->formals : lambda-exp -> list[symbol]
(define (lambda->formals exp) (define (lambda->formals exp)
(cadr exp)) (cadr exp))