Инт Инт в типах Ocaml - PullRequest
       28

Инт Инт в типах Ocaml

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

В задании у меня есть два пользовательских типа. Введите a использует INT of int, а тип b использует Int of int. Насколько я понимаю, это означает, что оба эти типа могут принимать int как часть этого типа. Есть ли способ конвертировать между типами А и В? Я пробовал печатать как

let typeA = INT 5
let typeB = Int 5
let cast = INT(typeB)

но это выдает ошибку несоответствия типов.

1 Ответ

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

OCaml является языком со строгой типизацией, поэтому в общем случае нет способа "приведения типов" из одного типа в другой.

Однако вы можете написать функцию, которая преобразует один тип в другой. Например, есть встроенная функция с именем float_of_int, которая преобразует число с плавающей точкой в ​​int. Существует также int_of_float (который отбрасывает любую дробную часть значения с плавающей запятой).

Вы можете легко написать функции в похожем духе для преобразования между двумя типами.

Вот код, который содержит все идеи, которые вам нужны (я думаю):

type mytype = MyConstructor of int

let increment (MyConstructor x) = MyConstructor (x + 1)
...