Сравнение шаблонов OCaml на встроенных типах - PullRequest
5 голосов
/ 29 июля 2010

Я пытаюсь написать полиморфную функцию, которая должна сделать что-то немного отличающееся в зависимости от типа параметра. Есть ли способ, которым я могу сделать сопоставление с образцом для типа объекта, используя встроенные типы? Я думаю о чем-то вроде этого:

let to_string v =
    match v with
    | string -> v
    | int -> string_of_int v
    | _ -> ""

но, похоже, это не действительная программа OCaml.

Я видел этот вопрос , но это не вполне отвечает и на мой вопрос. Я бы предпочел использовать стандартные встроенные типы вместо создания новых типов для этого (хотя я могу сделать это, если это единственный способ).

1 Ответ

4 голосов
/ 29 июля 2010

На самом деле этот ответ полностью относится к вам.Вы можете сопоставить только один класс типов, а тип, определенный объединением int, string, float, ..., не существует и должен быть создан (как в предыдущем ответе).'a работает с определенным типом, но не представляет объединение всех типов.

Вы можете делать то, что хотите, используя внешнюю функцию C ( 18.3 ), хотя, взглянув на раздел атомных тегов, я не уверен, что вы сможете различить char и int.

...