{
: append
: concat
: join
: equal
: length
: fetch
: clip
: compare
}

Where

Define (join glue strings)
    (concat (LIST.join glue strings))

Where

Define (concat strings) (LIST.reduce strings "" append)

Where

Define (compare a b)
    Let sign (Prim string_compare a b)
    In
    Cond {
    | [sign = -1] 'less
    | [sign = 0] 'equal
    | [sign = 1] 'greater
    }

Define (append s1 s2)
    (Prim string_append s1 s2)

Define (equal s1 s2)
    (Prim string_equal s1 s2)

Define (length s)
    (Prim string_length s)

Define (fetch s i)
    (Prim string_fetch s i)

Define (clip s begin end)
    (Prim string_clip s begin end)

Where

Let LIST Package "list"