Вы перепутали напечатанные и возвращенные значения.
displayList
не возвращает string
. Он печатает string
, а затем возвращает unit
. Оператор конкатенации строк (^
) ожидает два string
с, но, как уже упоминалось, тип возврата displayList
равен unit
.
Создание string
из unit
не делай то, что, кажется, ты ожидаешь. displayList
по-прежнему будет печатать 5;5;6;5;5;6;3;
, и ваше выражение будет возвращать строку типа "[()]"
.
Если вы намеревались напечатать [5;5;6;5;5;6;3;]
, решение (используя то, что у вас уже есть) может быть
let displayList l =
print_char '[';
List.iter(fun x -> print_string(string_of_int x^";")) l;
print_char ']'
;;