{Record append concat join equal length fetch clip compare}
Where
Let (join glue strings)
Match strings
| `nil ""
| `cons.{s strings}
Let strings
(LIST.fold strings []
Func s strings. (glue :: (s :: strings)))
In
(concat (s :: strings))
;
Where
Let (concat strings) (LIST.reduce strings "" append)
Where
Let (compare a b)
Switch (Prim string_compare a b)
| 1 `greater
| 0 `equal
| _ `less
;
Let (append s1 s2)
(Prim string_append s1 s2)
Let (equal s1 s2)
(Prim string_equal s1 s2)
Let (length s)
(Prim string_length s)
Let (fetch s i)
(Prim string_fetch s i)
Let (clip s begin end)
(Prim string_clip s begin end)
Where
Let LIST Package "list"