~ 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