Получить элемент из типа ocaml - PullRequest
0 голосов
/ 14 мая 2018

Новичок в Ocaml, поэтому задаю очень простой вопрос.

Если у меня есть тип, скажем type foobar = foo * bar и переменная a типа foobar. Можно ли получить только значение foo из метода? Есть ли другой способ, кроме сопоставления с образцом? Кроме того, в этом случае, как бы вы применили сопоставление с образцом? Поскольку объявленный тип не объявлен как type foobar = | Foobar of foo * bar?

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете сравнить с парой, как это:

# type intfloat = int * float;;
type intfloat = int * float
# let x : intfloat = (3, 5.5);;
val x : intfloat = (3, 5.5)
# let (int_part, _) = x in int_part;;
- : int = 3
# let (_, float_part) = x in float_part;;
- : float = 5.5    

Существует функция (не метод) fst, которая возвращает первый элемент пары.

# fst x;;
- : int = 3

Однако определение fst обязательно использует сопоставление с образцом:

let fst (a, b) = a

В этом определении конструкция (a, b) является шаблоном, который соответствует паре.

Сопоставление с образцом является неотъемлемой частью OCaml, а не просто необычной дополнительной функцией.

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