{
    Let append. append

    Let concat. concat

    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))
        ;

    Let equal. Prim string_equal

    Let length. Prim string_length

    Let fetch. Prim string_fetch

    Let clip. Prim string_clip

    Let compare a b.
        Switch (Prim string_compare a b)
        | 1 `greater
        | 0 `equal
        | _ `less
        ;
}

Where

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

Where

Let append. Prim string_append

Where

Let LIST. Package "list"