String, Character, and Bytevector Procedures

Strings and characters use Unicode scalar values with a documented ASCII-exact case approximation; bytevectors contain bytes 0 through 255.

At a glance

LISPEX
(list (string-upcase "Lispex") (char-numeric? #\7) (bytevector-u8-ref #u8(65) 0))

Result

OUTPUT
("LISPEX" #t 65)

Current guarantees

  • String construction, length, reference, copy, append, comparison, case conversion, mapping, and list/vector conversion are supported.
  • Character predicates and comparisons are deterministic; char-numeric? recognizes ASCII digits only.
  • Bytevector length and bytevector-u8-ref are available with strict byte/range checks.

Text and byte signatures

SignatureResultCurrent boundary
(string-ref string k)Unicode scalar characterE312 type; E311 range
(string-append string ...)fresh immutable stringno string-set! in v1.5
(char-ci=? char char ...)boolean under ASCII-exact approximationdocumented Unicode folding edges remain
(string-map proc string ...)fresh string; left-to-right callbackscallback exactly one character
(bytevector-u8-ref bytes k)exact integer 0..255read-only bytevector profile

Boundaries

  • Exact Unicode folding, mutable strings, bytevector mutation/copy, and UTF-8 codecs are deferred.