У меня есть следующий список:Фильтрующие элементы в списке по длине - OCaml
["A";"AA";"ABC";"BCD";"B";"C"]
Я случайно извлекающий элемент из списка. Но элемент извлечь должен быть размером 3 только не меньше, чем 3.
Я пытаюсь сделать это следующим образом:
let randomnum = (Random.int(List.length (list)));;
let rec code c =
if (String.length c) = 3 then c
else (code ((List.nth (list) (randomnum)))) ;;
print_string (code ((List.nth (list) (randomnum)))) ;;
Это прекрасно работает, если случайно строка длины 3 определена из список.
Но программа не заканчивается, если взята строка длиной < 3. Я пытаюсь сделать рекурсивный вызов, чтобы новый код продолжал подниматься до тех пор, пока мы не получим длину = 3.
Я не могу понять, почему это не заканчивается. Оператор печати ничего не выводит.
спасибо. я просто попробовал это и собирался удалить этот пост и увидел ваш ответ :) Еще раз спасибо. – JJunior 2010-11-29 05:18:50