Если я выполню следующее на верхнем уровне OCaml:
#require "num";;
open Ratio;;
ratio_of_int 2;;
Вывод:
- : Ratio.ratio = <ratio 2/1>
Как такое форматирование возможно? Источники говорят мне, что Ratio.ratio - это запись. Таким образом, результат должен быть больше похож на
{numerator = <big_int 2>; denominator = <big_int 1>; normalized = true}
Я пытался посмотреть, как выходное соотношение как-то жестко закодировано на верхнем уровне, но этот поиск оказался бесплодным. Будучи новичком в OCaml, я должен спросить, упускаю ли я что-то важное? На языке, который перегружен функциями строкового преобразования, это не было бы странно, но в случае с OCaml это поведение совершенно неуместно.