Use single version of primitives

This commit is contained in:
Justin Ethier 2015-07-01 21:46:21 -04:00
parent 10b9cbb7fd
commit cb55609c19
5 changed files with 18 additions and 15 deletions

View file

@ -68,7 +68,7 @@ self:
./cyclone scheme/cyclone/libraries.sld
./cyclone scheme/cyclone/transforms.sld
./cyclone scheme/cyclone/cgen.sld
./cyclone cyclone.scm
./cyclone cyclone-self.scm
.PHONY: test
test: $(TESTFILES) cyclone

View file

@ -52,7 +52,6 @@
(make-lambda (cdadr exp) ; formal parameters
(cddr exp)))) ; body
(define (lambda? exp) (tagged-list? 'lambda exp))
(define (lambda-parameters exp) (cadr exp))
(define (lambda-body exp) (cddr exp))
@ -68,7 +67,6 @@
(define (make-if predicate consequent alternative)
(list 'if predicate consequent alternative))
(define (begin? exp) (tagged-list? 'begin exp))
(define (begin-actions exp) (cdr exp))
(define (last-exp? seq) (null? (cdr seq)))
(define (first-exp seq) (car seq))

View file

@ -3,13 +3,18 @@
(scheme char))
; TODO: really need export-all for these cyclone libs!!
(export
any
every
filter
;; Code analysis
tagged-list?
if?
begin?
lambda?
;; Code generation
mangle
mangle-global)
mangle-global
;; Scheme library functions
any
every
filter)
(include "../../util.scm")
(begin
;; Simplified versions of every/any from SRFI-1

View file

@ -398,10 +398,6 @@
(define (letrec->args exp)
(map cadr (cadr exp)))
; lambda? : exp -> boolean
(define (lambda? exp)
(tagged-list? 'lambda exp))
(define (lambda-varargs? exp)
(and (lambda? exp)
(or (symbol? (lambda->formals exp))
@ -660,10 +656,6 @@
(define (prim-call? exp)
(and (list? exp) (prim? (car exp))))
; begin? : exp -> boolean
(define (begin? exp)
(tagged-list? 'begin exp))
; begin->exps : begin-exp -> list[exp]
(define (begin->exps exp)
(cdr exp))

View file

@ -15,6 +15,14 @@
(define (if? exp)
(tagged-list? 'if exp))
; begin? : exp -> boolean
(define (begin? exp)
(tagged-list? 'begin exp))
; lambda? : exp -> boolean
(define (lambda? exp)
(tagged-list? 'lambda exp))
; char->natural : char -> natural
(define (char->natural c)
(let ((i (char->integer c)))