~ chicken-r7rs (master) 139236c3975f09318320b3d84614bce1d5b1eca2
commit 139236c3975f09318320b3d84614bce1d5b1eca2
Author: Evan Hanson <evhan@foldling.org>
AuthorDate: Sun May 18 00:09:59 2014 +0000
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Sun May 18 00:09:59 2014 +0000
Use downcase for foldcase
diff --git a/scheme.char.scm b/scheme.char.scm
index 42bd2a5..5421d61 100644
--- a/scheme.char.scm
+++ b/scheme.char.scm
@@ -2,7 +2,7 @@
string-ci=? string-ci<? string-ci>? string-ci<=? string-ci>=?
char-alphabetic? char-numeric? char-whitespace?
char-upper-case? char-lower-case?
- ;; char-foldcase string-foldcase ; TODO
+ char-foldcase string-foldcase
char-upcase char-downcase
string-upcase string-downcase
digit-value)
@@ -18,7 +18,7 @@
%))
(require-library srfi-13)
-(import (only srfi-13 string-upcase string-downcase))
+(import (only srfi-13 string-map string-upcase string-downcase))
(import chicken)
(require-extension r7rs-compile-time)
@@ -47,8 +47,13 @@
(define-extended-arity-comparator string-ci<=? %string-ci<=? ##sys#check-string)
(define-extended-arity-comparator string-ci>=? %string-ci>=? ##sys#check-string)
-(: digit-value (char -> (or fixnum boolean)))
+(: char-foldcase (char --> char))
+(define (char-foldcase c) (char-downcase c))
+(: string-foldcase (string --> string))
+(define (string-foldcase s) (string-map char-foldcase s))
+
+(: digit-value (char --> (or fixnum boolean)))
(define (digit-value c)
(let ((i (char->integer c)))
(and (fx>= i 48) (fx<= i 57) (fx- i 48)))))
Trap