mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-17 01:37:34 +02:00
Added functions from transforms module
This commit is contained in:
parent
773de4d49c
commit
179c90869c
1 changed files with 39 additions and 41 deletions
|
@ -17,11 +17,11 @@
|
||||||
begin?
|
begin?
|
||||||
lambda?
|
lambda?
|
||||||
pair->list
|
pair->list
|
||||||
; lambda-formals->list
|
lambda-formals->list
|
||||||
; lambda-varargs?
|
lambda-varargs?
|
||||||
; lambda->formals
|
lambda->formals
|
||||||
; lambda-formals-type
|
lambda-formals-type
|
||||||
; lambda-varargs-var
|
lambda-varargs-var
|
||||||
;; Environments
|
;; Environments
|
||||||
env:enclosing-environment
|
env:enclosing-environment
|
||||||
env:first-frame
|
env:first-frame
|
||||||
|
@ -80,46 +80,44 @@
|
||||||
(cons lst '())
|
(cons lst '())
|
||||||
(cons (car lst) (loop (cdr lst))))))
|
(cons (car lst) (loop (cdr lst))))))
|
||||||
|
|
||||||
;; 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-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))
|
||||||
;
|
|
||||||
TODO: WTF, which version of lambda-varargs? to use? does it matter? figure this out in transforms.sld first
|
(define (lambda-varargs? exp)
|
||||||
TODO: why the fuck do we get a circular dep error after these functions are removed from transforms? what is going on with that?
|
(and (lambda? exp)
|
||||||
;;(define (lambda-varargs? exp)
|
(or (symbol? (lambda->formals exp))
|
||||||
;; (and (lambda? exp)
|
(and (pair? (lambda->formals exp))
|
||||||
;; (or (symbol? (lambda->formals exp))
|
(not (list? (lambda->formals exp)))))))
|
||||||
;; (and (pair? (lambda->formals exp))
|
; Alternate definition:
|
||||||
;; (not (list? (lambda->formals exp)))))))
|
|
||||||
;; Alternate definition:
|
|
||||||
;(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-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 (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)))
|
||||||
|
|
||||||
; char->natural : char -> natural
|
; char->natural : char -> natural
|
||||||
(define (char->natural c)
|
(define (char->natural c)
|
||||||
|
|
Loading…
Add table
Reference in a new issue