From bc151ed781f5feb8b27006244f4041b690825d14 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Thu, 26 Mar 2015 13:13:32 -0400 Subject: [PATCH] Added (char-downcase) --- trans.scm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/trans.scm b/trans.scm index f349a4e9..93b10bc7 100644 --- a/trans.scm +++ b/trans.scm @@ -72,13 +72,22 @@ (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-upcase c) + ; TODO: char-ci predicates + (define (char-upcase c) ;; ASCII-only (if (char-lower-case? c) (integer->char (- (char->integer c) (- (char->integer #\a) (char->integer #\A)))) c)) + (define (char-downcase c) ;; ASCII-only + (if (char-upper-case? c) + (integer->char + (+ (char->integer c) + (- (char->integer #\a) + (char->integer #\A)))) + c)) + ; TODO: char-foldcase (define (char-alphabetic? c) (and (char>=? c #\A) (char<=? c #\z))) ;; ASCII-only (define (char-upper-case? c) (and (char>=? c #\A) (char<=? c #\Z))) ;; ASCII-only (define (char-lower-case? c) (and (char>=? c #\a) (char<=? c #\z))) ;; ASCII-only