Почему ||нельзя использовать при сопоставлении с образцом? - PullRequest
0 голосов
/ 06 октября 2018

В OCaml, когда я делаю сопоставление с образцом, я не могу сделать следующее:

let rec example = function
   | ... -> ...
   | ... || ... -> ... (* here I get a syntax error because I use ||*)

Вместо этого мне нужно сделать:

let rec example1 = function
     |... -> ...
     |... | ... -> ...

Я знаю, что || означаетили в OCaml, но почему нам нужно использовать только один «канал»: | для указания «или» в сопоставлении с образцом?

Почему обычный || не работает?

1 Ответ

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

|| на самом деле не означает "или", обычно это означает "логическое значение или", или, скорее, это логическое значение или оператор.Операторы оперируют значениями, полученными в результате вычисления выражений, его операндами.Операции и операнды вместе также образуют выражения, которые затем могут использоваться как операнды с другими операторами для формирования дальнейших выражений и т. Д.

Сопоставление с образцом с другой стороны оценивает шаблоны, которые не являются ни логическими, ни выражениями.Хотя шаблоны в некотором смысле оцениваются как истинные или ложные, если они применяются к значению или скорее сопоставляются с ним, они не оценивают что-либо самостоятельно.В этом смысле они больше похожи на операторы, чем на операнды.Кроме того, результатом сопоставления с шаблоном является не только логическое значение, но и набор привязок.

Использование || вместо | с шаблонами может привести к перегрузке его значения и послужит большей путаницей, чемуточнить я думаю.

...