OCaml имеет статическую типизацию.То есть его типы существуют только во время компиляции.Во время выполнения есть только значения.Таким образом, вы не можете реально иметь функцию, которая определяет тип значения.
(ИМХО, есть реальные преимущества, когда типы сбиваются во время компиляции, и не позволяют поведению программы зависеть от типов тестирования ввремя выполнения. В целом, это делает программы более понятными и легкими для рассуждений.)
Если вы хотите проверить свои догадки о типах, вы можете сделать это во время компиляции, приписав тип переменной (или действительно любомувыражение).
Например, вы можете сказать:
let (x : int list) = funtion_to_call arg1 arg2 in
. . .
Если function_to_call
возвращает что-то отличное от списка целых, компилятор выдаст ошибку на этом этапе.