Я пытаюсь прочитать из файла в OCaml и разбить каждую строку на список строк, разделенных пробелами, а затем добавить этот список в накопительный список. Я получаю ошибку:
File "bin/scanner.ml", line 17, characters 25-42:
Error: This expression has type string list
but an expression was expected of type unit
Вся моя программа (scanner.ml):
1 let tokens = [];;
2
3 let split_spaces line =
4 (String.split_on_char ' ' line) @ tokens;
5 ;;
6
7 (* Read input from an external file *)
8 let line_stream_of_channel channel =
9 Stream.from
10 (fun _ ->
11 try Some (input_line channel) with End_of_file -> None)
12 ;;
13
14 let in_channel = open_in "./input_files/test.c" in
15 try
16 Stream.iter
17 (fun line -> split_spaces line)
18 (line_stream_of_channel in_channel);
19 close_in in_channel
20 with e ->
21 close_in in_channel;
22 raise e
23 ;;
Мне кажется, я понимаю, что ошибка в том, что split_space возвращает список строк, в то время как анонимная функция в строке 17 ожидает функцию, возвращающую единицу типа. Я застрял в том, как я могу изменить split_spaces так, чтобы его возвращаемый тип был единицей.