Added char predicates

This commit is contained in:
Justin Ethier 2015-03-25 17:52:42 -04:00
parent 3bb3234db7
commit 255e9d71d8

View file

@ -55,18 +55,23 @@
(define *Cyc-version-banner* ,*version-banner*) (define *Cyc-version-banner* ,*version-banner*)
;; TODO: The whitespace characters are space, tab, line feed, form feed (not in parser yet), and carriage return. ;; TODO: The whitespace characters are space, tab, line feed, form feed (not in parser yet), and carriage return.
(define call-with-current-continuation call/cc) (define call-with-current-continuation call/cc)
; TODO: (define (Cyc-bool-op cmp x lst) (define (Cyc-bin-op cmp x lst)
; TODO: (cond (cond
; TODO: ((null? lst) #t) ((null? lst) #t)
; TODO: ((cmp x (car lst)) ((cmp x (car lst))
; TODO: (Cyc-bool-op (car lst) (cdr lst))) (Cyc-bin-op cmp (car lst) (cdr lst)))
; TODO: (else #f))) (else #f)))
; TODO: (define (char>? c1 c2 . cs) (define (Cyc-bin-op-char cmp c cs)
; TODO: (Cyc-bool-op (Cyc-bin-op
; TODO: (lambda (x y) (lambda (x y)
; TODO: (> (char->integer x) (char->integer y))) (cmp (char->integer x) (char->integer y)))
; TODO: c1 c
; TODO: (cons c2 cs))) cs))
(define (char=? c1 c2 . cs) (Cyc-bin-op-char = c1 (cons c2 cs)))
(define (char<? c1 c2 . cs) (Cyc-bin-op-char < c1 (cons c2 cs)))
(define (char>? c1 c2 . cs) (Cyc-bin-op-char > c1 (cons c2 cs)))
(define (char<=? c1 c2 . cs) (Cyc-bin-op-char <= c1 (cons c2 cs)))
(define (char>=? c1 c2 . cs) (Cyc-bin-op-char >= c1 (cons c2 cs)))
(define (char-whitespace? c) (member c '(#\tab #\space #\return #\newline))) (define (char-whitespace? c) (member c '(#\tab #\space #\return #\newline)))
(define (char-numeric? c) (member c '(#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9))) (define (char-numeric? c) (member c '(#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9)))
; TODO: implement in terms of char>? procs ==> (define (char-upper-case? c) ; TODO: implement in terms of char>? procs ==> (define (char-upper-case? c)