Channels
Канала (channels) это пара модулей (In_channel и Out_channel) из стандартной библиотеке, упрощающие работу с файловыми потоками. Это не абстракция, а именно обвёртка над файловым интерфейсом операционной системы.
Именование
Сокращать название каналов можно до oc (Out_channel) и ic (In_channel). Либо используйте осознанные имена, вроде config_file.
Безопасная работа
Предпочитайте открытие канала при помощи функций with_open_*, так как в случае исключений они безопасно закроют файл.
ocaml
let () =
In_channel.with_open_text "some.file" @@ fun ic -> (* ... *)Канал из строчки
Из-за особенности устройства channels, замокать это нельзя, но можно несколько извратиться посредством пайпов. Пример кода взят от сюда:
ocaml
let in_channel_of_string str =
let (in_file_fd, out_file_fd) = Unix.pipe () in
let ic = Unix.in_channel_of_descr in_file_fd in
let out = Unix.out_channel_of_descr out_file_fd in
output_string out str;
close_out out;
icЕсть также готовая библиотека для этого под названием redirect.