Added unless

This commit is contained in:
Justin Ethier 2016-01-29 22:58:03 -05:00
parent c2db08de46
commit 1c3e546be7

View file

@ -112,6 +112,7 @@
cond-expand cond-expand
do do
when when
unless
quasiquote quasiquote
floor floor
ceiling ceiling
@ -123,40 +124,6 @@
;;;; ;;;;
; Possibly missing functions: ; Possibly missing functions:
; ;
; ; TODO: error-object-irritants
; ; TODO: error-object-message
; ; TODO: error-object?
; ; TODO: file-error?
; ; TODO: read-error?
; ;(Cyc-bin-op cmp x lst)
; ;(Cyc-bin-op-char cmp c cs)
; ;=>
; ;bytevector-u8-set!
; ;current-error-port
; ;define-values
; ;error-object-irritants
; ;error-object-message
; ;error-object?
; ;file-error?
; ;guard
; ;import
; ;include-ci
; ;let-syntax
; ;letrec-syntax
; ;list-set!
; ;peek-u8
; ;port?
; ;raise
; ;raise-continuable
; ;read-bytevector!
; ;read-error?
; ;read-u8
; ;symbol=?
; ;syntax-rules
; ;u8-ready?
; ;unquote
; ;unquote-splicing
; ;write-u8
; binary-port? ; binary-port?
; bytevector ; bytevector
; bytevector-append ; bytevector-append
@ -164,42 +131,29 @@
; bytevector-copy! ; bytevector-copy!
; bytevector-length ; bytevector-length
; bytevector-u8-ref ; bytevector-u8-ref
; bytevector-u8-set!
; bytevector? ; bytevector?
; char->integer
; char-ready?
; close-input-port
; close-output-port
; close-port
; complex? ; complex?
; current-error-port
; define-record-type ; define-record-type
; define-values
; denominator ; denominator
; eof-object ; eof-object
; eof-object?
; eq?
; equal?
; eqv?
; exact-integer-sqrt
; foldl
; foldr
; get-output-bytevector ; get-output-bytevector
; get-output-string ; get-output-string
; guard
; import
; include ; include
; input-port-open? ; input-port-open?
; input-port? ; input-port?
; integer->char
; integer?
; length
; let*-values ; let*-values
; let-syntax
; let-values ; let-values
; letrec* ; letrec*
; letrec-syntax
; list->string ; list->string
; list->vector ; list->vector
; list-set! ; list-set!
; make-bytevector ; make-bytevector
; make-vector
; number->string
; number?
; numerator ; numerator
; open-input-bytevector ; open-input-bytevector
; open-input-string ; open-input-string
@ -207,41 +161,26 @@
; open-output-string ; open-output-string
; output-port-open? ; output-port-open?
; output-port? ; output-port?
; pair?
; parameterize ; parameterize
; peek-char ; peek-u8
; procedure?
; quotient
; raise ; raise
; raise-continuable ; raise-continuable
; rational? ; rational?
; rationalize ; rationalize
; read-bytevector ; read-bytevector
; read-char ; read-bytevector!
; read-string ; read-string
; real? ; read-u8
; record? ; record?
; remainder
; string->number
; string->symbol
; string->utf8 ; string->utf8
; string-append
; string-length
; string-ref
; string?
; substring
; symbol->string
; symbol=?
; symbol?
; syntax-error ; syntax-error
; syntax-rules
; textual-port? ; textual-port?
; unless ; u8-ready?
; utf8->string ; utf8->string
; vector-length
; vector-ref
; vector?
; write-bytevector ; write-bytevector
; write-string ; write-string
; write-u8
;;;; ;;;;
) )
(begin (begin
@ -423,6 +362,14 @@
`(if ,(cadr exp) `(if ,(cadr exp)
((lambda () ,@(cddr exp))) ((lambda () ,@(cddr exp)))
#f)))) #f))))
(define-syntax unless
(er-macro-transformer
(lambda (exp rename compare)
(if (null? (cdr exp)) (error "empty unless" exp))
(if (null? (cddr exp)) (error "no unless body" exp))
`(if ,(cadr exp)
#f
((lambda () ,@(cddr exp)))))))
(define-syntax do (define-syntax do
(er-macro-transformer (er-macro-transformer
(lambda (expr rename compare) (lambda (expr rename compare)