Если я выполнил следующее в OCaml toplevel:
#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 я считаю это поведение совершенно неуместным.