{
: append
: concat
: join
: equal
: length
: fetch
: clip
: compare
}
Where
Define (join glue strings)
Match strings
| 'nil ""
| 'cons.{s strings}
Let strings
(LIST.fold strings 'nil
Func {s strings} [Right glue & s & strings])
In
(concat [s & 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"