Для чего бы это ни стоило, я не понимаю, почему вы хотите вести себя иначе, когда заголовок списка - пустая строка.
Вот что делает встроенная функция конкатенации строк для этого случая:
# String.concat "," [""; "yes"];;
- : string = ",yes"
Это выглядит довольно разумно для меня, и это такое же поведение, что и для не "" "заголовка списка.
Если вы хотите сделать что-то другое, когда голова "", ваш код не выполняет никакой рекурсии для этого случая. Таким образом, весь вывод будет только один разделитель.
Если вы просто напишите часть else
с двумя операциями ^
и рекурсивным вызовом join
, вы обнаружите, что код в OCaml так же прост, как в C или Java.