Есть ли какой-нибудь способ получить тип значения, например, c # или java-отражение в OCaml? - PullRequest
0 голосов
/ 22 октября 2018

Я использую vscode + merlin для чтения кода OCaml.Иногда он может дать мне тип, но иногда он только говорит мне, что тип 'a, это то же самое, что ничего мне не говорить.Я должен угадать тип значения, читая код.Чтение кода для определения типа значения важно, но иногда я не уверен, если мои предположения верны.

Поэтому я хочу метод, который может получить тип значения во время выполнения, например отражение в Java или C #.

var a = 1;
Console.WriteLine(a.GetType());

Есть ли способ сделать то же самое в OCaml?

1 Ответ

0 голосов
/ 22 октября 2018

OCaml имеет статическую типизацию.То есть его типы существуют только во время компиляции.Во время выполнения есть только значения.Таким образом, вы не можете реально иметь функцию, которая определяет тип значения.

(ИМХО, есть реальные преимущества, когда типы сбиваются во время компиляции, и не позволяют поведению программы зависеть от типов тестирования ввремя выполнения. В целом, это делает программы более понятными и легкими для рассуждений.)

Если вы хотите проверить свои догадки о типах, вы можете сделать это во время компиляции, приписав тип переменной (или действительно любомувыражение).

Например, вы можете сказать:

let (x : int list) = funtion_to_call arg1 arg2 in
. . .

Если function_to_call возвращает что-то отличное от списка целых, компилятор выдаст ошибку на этом этапе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...