Added types and tests for string operations

This commit is contained in:
Eric Dobson 2011-06-15 12:48:25 -04:00 committed by Sam Tobin-Hochstadt
parent a621eaf041
commit ab23db7b5b
3 changed files with 162 additions and 33 deletions

View File

@ -0,0 +1,75 @@
#lang typed/racket
(: s1 String)
(: s2 String)
(: s3 String)
(: s4 String)
(: s5 String)
(: s6 String)
(define s1 "abc")
(define s2 "def")
(define s3 "DEF")
(define s4 (string #\a #\b #\c))
(define s5 (make-string 4 #\b))
(define s6 (build-string 26 integer->char))
(string? s1)
(string? 2)
(string->immutable-string s5)
(string-length s6)
(string-copy s3)
(string-copy! (make-string 4) 0 s4)
(string-copy! (make-string 4) 1 s4 1)
(string-copy! (make-string 4) 1 s4 1 2)
(string-fill! (make-string 5) #\Z)
(string-append)
(string-append s1 s2)
(string-append s1 s2 s3)
(string->list s6)
(list->string (list #\a #\d #\d))
(string=? s2 s3)
(string<? s2 s3)
(string>? s2 s3)
(string<=? s2 s3)
(string>=? s2 s3)
(string-upcase s2)
(string-downcase s3)
(string-titlecase s4)
(string-foldcase s5)
(string-ci=? s2 s3)
(string-ci<? s2 s3)
(string-ci>? s2 s3)
(string-ci<=? s2 s3)
(string-ci>=? s2 s3)
(string-normalize-nfd s2)
(string-normalize-nfkd s3)
(string-normalize-nfc s4)
(string-normalize-nfkc s5)
(string-locale=? s2 s3)
(string-locale<? s2 s3)
(string-locale>? s2 s3)
(string-locale-upcase s2)
(string-locale-downcase s3)
(string-locale-ci=? s2 s3)
(string-locale-ci<? s2 s3)
(string-locale-ci>? s2 s3)

View File

@ -23,11 +23,16 @@
[build-list (-poly (a) (index-type (-Index . -> . a) . -> . (-lst a)))]
[make-list (-poly (a) (index-type a . -> . (-lst a)))]
[string-ref (-> -String index-type -Char)]
[substring (->opt -String index-type [index-type] -String)]
;Section 3.3
[make-string (cl-> [(index-type) -String] [(index-type -Char) -String])]
[string-ref (-> -String index-type -Char)]
[string-set! (-String index-type -Char . -> . -Void)]
[substring (->opt -String index-type [index-type] -String)]
[string-copy! (-String index-type -String [index-type index-type] . ->opt . -Void)]
[build-string (index-type (index-type . -> . -Char) . -> . -String)]
[read-string (index-type [-Input-Port] . ->opt . (Un -String (-val eof)))]
[read-string! (-String [-Input-Port index-type index-type] . ->opt . (Un -Index (-val eof)))]

View File

@ -191,7 +191,7 @@
(-> (Un a (-val #f)) a)))]
[defined? (->* (list Univ) -Boolean : (-FS (-not-filter -Undefined 0 null) (-filter -Undefined 0 null)))]
[gensym (->opt [Sym] Sym)]
[string-append (->* null -String -String)]
[open-input-string (-> -String -Input-Port)]
[open-input-bytes (-> -Bytes -Input-Port)]
[open-output-file
@ -234,11 +234,90 @@
[channel-try-get (-poly (a) ((-channel a) . -> . (Un a (-val #f))))]
[channel-put (-poly (a) ((-channel a) a . -> . -Void))]
;Section 3.3
[string? (make-pred-ty -String)]
;make-string (in Index)
[string (->* '() -Char -String)]
[string->immutable-string (-> -String -String)]
[string-length (-String . -> . -Index)]
[unsafe-string-length (-String . -> . -Index)]
;string-ref (in Index)
;string-set! (in Index)
;substring (in Index)
[string-copy (-> -String -String)]
;string-copy! (in Index)
[string-fill! (-> -String -Char -Void)]
[string-append (->* null -String -String)]
[string->list (-String . -> . (-lst -Char))]
[list->string ((-lst -Char) . -> . -String)]
;build-string (in Index)
[string=? (->* (list -String -String) -String B)]
[string<? (->* (list -String -String) -String B)]
[string<=? (->* (list -String -String) -String B)]
[string>? (->* (list -String -String) -String B)]
[string>=? (->* (list -String -String) -String B)]
[string-ci=? (->* (list -String -String) -String B)]
[string-ci<? (->* (list -String -String) -String B)]
[string-ci<=? (->* (list -String -String) -String B)]
[string-ci>? (->* (list -String -String) -String B)]
[string-ci>=? (->* (list -String -String) -String B)]
[string-upcase (-> -String -String)]
[string-downcase (-> -String -String)]
[string-titlecase (-> -String -String)]
[string-foldcase (-> -String -String)]
[string-normalize-nfd (-> -String -String)]
[string-normalize-nfkd (-> -String -String)]
[string-normalize-nfc (-> -String -String)]
[string-normalize-nfkc (-> -String -String)]
[string-locale=? (->* (list -String -String) -String B)]
[string-locale<? (->* (list -String -String) -String B)]
[string-locale>? (->* (list -String -String) -String B)]
[string-locale-ci=? (->* (list -String -String) -String B)]
[string-locale-ci<? (->* (list -String -String) -String B)]
[string-locale-ci>? (->* (list -String -String) -String B)]
[string-locale-upcase (-> -String -String)]
[string-locale-downcase (-> -String -String)]
; racket/string
[string-append*
(cl->* (-> (-lst -String) -String)
(-> -String (-lst -String) -String))]
[string-join (-> (-lst -String) -String -String)]
[symbol? (make-pred-ty Sym)]
[keyword? (make-pred-ty -Keyword)]
[list? (make-pred-ty (-lst Univ))]
@ -333,9 +412,6 @@
[member (-poly (a) (a (-lst a) . -> . (-opt (-lst a))))]
[findf (-poly (a) ((a . -> . B) (-lst a) . -> . (-opt a)))]
[string<? (->* (list -String -String) -String B)]
[string>? (->* (list -String -String) -String B)]
[string=? (->* (list -String -String) -String B)]
[char=? (->* (list -Char -Char) -Char B)]
[char<=? (->* (list -Char -Char) -Char B)]
[char>=? (->* (list -Char -Char) -Char B)]
@ -346,8 +422,6 @@
[char-ci>=? (->* (list -Char -Char) -Char B)]
[char-ci>? (->* (list -Char -Char) -Char B)]
[char-ci<? (->* (list -Char -Char) -Char B)]
[string<=? (->* (list -String -String) -String B)]
[string>=? (->* (list -String -String) -String B)]
[char-alphabetic? (-> -Char B)]
[char-lower-case? (-> -Char B)]
@ -365,16 +439,6 @@
pc po sc sm sk so zs zp zl cc cf cs co cn))))]
[make-known-char-range-list (-> (-lst (-Tuple (list -PosInt -PosInt B))))]
[string-ci<? (->* (list -String -String) -String B)]
[string-ci>? (->* (list -String -String) -String B)]
[string-ci=? (->* (list -String -String) -String B)]
[string-ci<=? (->* (list -String -String) -String B)]
[string-ci>=? (->* (list -String -String) -String B)]
[string-upcase (-> -String -String)]
[string-downcase (-> -String -String)]
[string-titlecase (-> -String -String)]
[string-foldcase (-> -String -String)]
[char-upcase (-> -Char -Char)]
[char-downcase (-> -Char -Char)]
[char-titlecase (-> -Char -Char)]
@ -383,13 +447,7 @@
[integer->char (-> -Integer -Char)]
[char-utf-8-length (-> -Char (apply Un (map -val '(1 2 3 4 5 6))))]
[string-normalize-nfd (-> -String -String)]
[string-normalize-nfkd (-> -String -String)]
[string-normalize-nfc (-> -String -String)]
[string-normalize-nfkc (-> -String -String)]
[string-copy (-> -String -String)]
[string->immutable-string (-> -String -String)]
[with-input-from-file
@ -807,10 +865,6 @@
[maybe-print-message (-String . -> . -Void)]
[list->string ((-lst -Char) . -> . -String)]
[string->list (-String . -> . (-lst -Char))]
[build-string (-Nat (-Index . -> . -Char) . -> . -String)]
[sort (-poly (a b) (cl->* ((-lst a) (a a . -> . B)
#:cache-keys? B #f
. ->key . (-lst a))
@ -999,11 +1053,6 @@
(-poly (a) ((list (-vec a)) -Integer . ->* . (-values (list (-vec a) (-vec a)))))]
;; racket/string
[string-join (-> (-lst -String) -String -String)]
[string-append*
(cl->* (-> (-lst -String) -String)
(-> -String (-lst -String) -String))]
;; scheme/system
[system ((Un -String -Bytes) . -> . -Boolean)]