StringsStrings in Seen are UTF-8 encoded, represented as .

Strings

String

Strings in Seen are UTF-8 encoded, represented as {len: Int, data: ptr}.

String Interpolation

let name = "World"
println("Hello, {name}!")
println("2 + 2 = {2 + 2}")

Operators

let greeting = "Hello, " + "World!"     // concatenation
let equal = "abc" == "abc"              // equality
let notEqual = "abc" != "xyz"           // inequality

Length

let s = "hello"
let len = s.length()           // byte length: 5

Character Access

let ch = seen_char_at(s, 0)   // Unicode code point at index
let byte = seen_byte_at(s, 0) // raw byte at index

String Functions

Prefix, suffix, search, count, split, and replace helpers scan byte indexes directly and allocate only the returned pieces or rebuilt result. Common prefix/suffix and substring probes use runtime byte-search fast paths, including a single-byte memchr path for delimiter-heavy workloads.

Function Signature Description
split (text: String, delimiter: String) r: Array<String> Split by delimiter
trim (text: String) r: String Remove leading/trailing whitespace
startsWith (text: String, prefix: String) r: Bool Check prefix
endsWith (text: String, suffix: String) r: Bool Check suffix
contains (text: String, needle: String) r: Bool Check substring
indexOf (text: String, needle: String, start: Int) r: Int Find first occurrence (-1 if not found)

Runtime String Functions

Function Signature Description
seen_str_concat_ss (a: String, b: String) r: String Concatenate
seen_str_eq_ss (a: String, b: String) r: Bool Equality
seen_substring (s: String, start: Int, end: Int) r: String Substring extraction
seen_int_to_string (n: Int) r: String Int to string
seen_float_to_string (f: Float) r: String Float to string
seen_char_to_str (c: Int) r: String Char code point to string

Stdlib String Functions

Function Signature Description
String_toUpperCase (s: String) r: String Uppercase conversion
String_toLowerCase (s: String) r: String Lowercase conversion
String_toInt (s: String) r: Int Parse as integer
String_toFloat (s: String) r: Float Parse as float
String_reverse (s: String) r: String Reverse string
String_isEmpty (s: String) r: Int Check if empty
String_count (s: String, needle: String) r: Int Count occurrences
String_replace (s: String, old: String, new: String) r: String Replace all occurrences
String_fromCharCode (code: Int) r: String Create from Unicode code point

Extended String Functions (seen_std/src/str/)

Function Signature Description
trimStart (s: String) r: String Trim leading whitespace
trimEnd (s: String) r: String Trim trailing whitespace
lastIndexOf (s: String, needle: String) r: Int Last occurrence
lines (s: String) r: Array<String> Split into lines
splitWhitespace (s: String) r: Array<String> Split on whitespace
words (s: String) r: Array<String> Split into words
replaceFirst (s: String, old: String, new: String) r: String Replace first occurrence
removePrefix (s: String, prefix: String) r: String Remove prefix if present
removeSuffix (s: String, suffix: String) r: String Remove suffix if present
ensurePrefix (s: String, prefix: String) r: String Add prefix if missing
ensureSuffix (s: String, suffix: String) r: String Add suffix if missing
padStart (s: String, len: Int, ch: Char) r: String Pad start
padEnd (s: String, len: Int, ch: Char) r: String Pad end
repeat (s: String, n: Int) r: String Repeat N times
join (arr: Array<String>, sep: String) r: String Join with separator

StringBuilder

Efficient string building with amortized allocation. repeat, join, split, and compiler-facing builder paths use this instead of repeated string concatenation for large outputs. toString() flattens the accumulated parts through a one-pass runtime helper.

import str.string

Constructor

let sb = StringBuilder.new()

Methods

Method Return Description
append(text: String) Void Append string
tryAppend(text: String) Result<Unit, AllocError> Append after checking the current memory budget
appendChar(ch: Char) Void Append character
appendLine(text: String) Void Append string + newline
appendAll(values: Array<String>) Void Append all strings
clear() Void Clear contents
isEmpty() Bool Check if empty
length() Int Get total length
toString() String Build final string with a linear flatten pass
tryToString() Result<String, AllocError> Build after checking the current memory budget
writeToFile(path: String) Bool Stream builder parts to a file
buildAndClear() String Build string and clear builder

Example

let sb = StringBuilder.new()
sb.append("Hello")
sb.append(", ")
sb.append("World!")
let result = sb.toString()  // "Hello, World!"

Character Functions

Function Signature Description
Char_isDigit (c: Int) r: Int Is digit [0-9]
Char_isAlpha (c: Int) r: Int Is alphabetic [A-Za-z]
Char_isAlphanumeric (c: Int) r: Int Is alphanumeric
Char_isUpperCase (c: Int) r: Int Is uppercase
Char_isLowerCase (c: Int) r: Int Is lowercase
Char_isWhitespace (c: Int) r: Int Is whitespace
Char_toUpperCase (c: Int) r: Int To uppercase
Char_toLowerCase (c: Int) r: Int To lowercase
Char_toInt (c: Int) r: Int Character to integer (identity)
Architected in Kotlin. Rendered with Materia. Powered by Aether.
© 2026 Yousef.