{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"