Неверный аргумент "String.sub / Bytes.sub" - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть небольшая проблема с упражнением, которое я выполняю.Я пытаюсь рекурсивно считать гласные в строке, но у меня появляется эта странная ошибка.Может кто-нибудь объяснить мне, почему?

  let rec nb_voyelle = function chaine ->
                           if chaine == "" then
                             0
                           else
                             let length = (String.length chaine)-1 in
                             let p_length = String.sub chaine 0 length in
                             match chaine.[length] with
                             | 'a' | 'e' | 'i' | 'o' | 'u' | 'y' -> 1 + nb_voyelle p_length
                             | _ -> 0 + nb_voyelle p_length

    ;;

1 Ответ

0 голосов
/ 09 февраля 2019

Ответ - я использовал "==", чтобы сравнить строку в моем последнем случае, что не очень хорошо подходит для проверки равенства между двумя элементами.

Таким образом, случай (String.sub "" 0-1) происходит, и функция не вызывает эту ошибку.

...