mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-14 16:27:35 +02:00
Relocated functions
This commit is contained in:
parent
957672fe70
commit
eac413a2f5
2 changed files with 22 additions and 22 deletions
|
@ -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))
|
||||||
|
|
|
@ -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))
|
||||||
|
|
Loading…
Add table
Reference in a new issue