mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-25 04:55:04 +02:00
Staging changes
This commit is contained in:
parent
5cf0cd048b
commit
6d3e5f041f
1 changed files with 42 additions and 42 deletions
|
@ -61,12 +61,12 @@
|
||||||
letrec->exp
|
letrec->exp
|
||||||
letrec->bound-vars
|
letrec->bound-vars
|
||||||
letrec->args
|
letrec->args
|
||||||
lambda-varargs?
|
;lambda-varargs?
|
||||||
lambda->formals
|
;lambda->formals
|
||||||
lambda-varargs?
|
;lambda-varargs?
|
||||||
lambda-varargs-var
|
;lambda-varargs-var
|
||||||
lambda-formals-type
|
;lambda-formals-type
|
||||||
lambda-formals->list
|
;lambda-formals->list
|
||||||
lambda-num-args
|
lambda-num-args
|
||||||
ast:lambda-formals-type
|
ast:lambda-formals-type
|
||||||
ast:lambda-formals->list
|
ast:lambda-formals->list
|
||||||
|
@ -325,50 +325,50 @@
|
||||||
(define (letrec->args exp)
|
(define (letrec->args exp)
|
||||||
(map cadr (cadr exp)))
|
(map cadr (cadr exp)))
|
||||||
|
|
||||||
(define (lambda-varargs? exp)
|
;(define (lambda-varargs? exp)
|
||||||
(and (lambda? exp)
|
; (and (lambda? exp)
|
||||||
(or (symbol? (lambda->formals exp))
|
; (or (symbol? (lambda->formals exp))
|
||||||
(and (pair? (lambda->formals exp))
|
; (and (pair? (lambda->formals exp))
|
||||||
(not (list? (lambda->formals exp)))))))
|
; (not (list? (lambda->formals 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))
|
||||||
|
;
|
||||||
(define (lambda-varargs? exp)
|
;(define (lambda-varargs? exp)
|
||||||
(let ((type (lambda-formals-type exp)))
|
; (let ((type (lambda-formals-type exp)))
|
||||||
(or (equal? type 'args:varargs)
|
; (or (equal? type 'args:varargs)
|
||||||
(equal? type 'args:fixed-with-varargs))))
|
; (equal? type 'args:fixed-with-varargs))))
|
||||||
|
;
|
||||||
(define (lambda-varargs-var exp)
|
;(define (lambda-varargs-var exp)
|
||||||
(if (lambda-varargs? exp)
|
; (if (lambda-varargs? exp)
|
||||||
(if (equal? (lambda-formals-type exp) 'args:varargs)
|
; (if (equal? (lambda-formals-type exp) 'args:varargs)
|
||||||
(lambda->formals exp) ; take symbol directly
|
; (lambda->formals exp) ; take symbol directly
|
||||||
(car (reverse (lambda-formals->list exp)))) ; Last arg is varargs
|
; (car (reverse (lambda-formals->list exp)))) ; Last arg is varargs
|
||||||
#f))
|
; #f))
|
||||||
|
|
||||||
(define (ast:lambda-formals-type ast)
|
(define (ast:lambda-formals-type ast)
|
||||||
(lambda-formals-type `(#f ,(ast:lambda-args ast) #f)))
|
(lambda-formals-type `(#f ,(ast:lambda-args ast) #f)))
|
||||||
|
|
||||||
(define (lambda-formals-type exp)
|
;(define (lambda-formals-type exp)
|
||||||
(let ((args (lambda->formals exp)))
|
; (let ((args (lambda->formals exp)))
|
||||||
(cond
|
; (cond
|
||||||
((symbol? args) 'args:varargs)
|
; ((symbol? args) 'args:varargs)
|
||||||
((list? args) 'args:fixed)
|
; ((list? args) 'args:fixed)
|
||||||
((pair? args) 'args:fixed-with-varargs)
|
; ((pair? args) 'args:fixed-with-varargs)
|
||||||
(else
|
; (else
|
||||||
(error `(Unexpected formals list in lambda-formals-type: ,args))))))
|
; (error `(Unexpected formals list in lambda-formals-type: ,args))))))
|
||||||
|
|
||||||
(define (ast:lambda-formals->list ast)
|
(define (ast:lambda-formals->list ast)
|
||||||
(lambda-formals->list `(#f ,(ast:lambda-args ast) #f)))
|
(lambda-formals->list `(#f ,(ast:lambda-args ast) #f)))
|
||||||
|
|
||||||
(define (lambda-formals->list exp)
|
;(define (lambda-formals->list exp)
|
||||||
(if (lambda-varargs? exp)
|
; (if (lambda-varargs? exp)
|
||||||
(let ((args (lambda->formals exp)))
|
; (let ((args (lambda->formals exp)))
|
||||||
(if (symbol? args)
|
; (if (symbol? args)
|
||||||
(list args)
|
; (list args)
|
||||||
(pair->list args)))
|
; (pair->list args)))
|
||||||
(lambda->formals exp)))
|
; (lambda->formals exp)))
|
||||||
|
|
||||||
;; Minimum number of required arguments for a lambda
|
;; Minimum number of required arguments for a lambda
|
||||||
(define (lambda-num-args exp)
|
(define (lambda-num-args exp)
|
||||||
|
|
Loading…
Add table
Reference in a new issue