Определяемый пользователем тип Ocaml - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть следующий определенный пользователем тип:

poly = Poly of (float*int) list

, и я пытаюсь применить сопоставление с образцом, однако я борюсь со случаем, когда мой Poly не является пустым списком, мой последняя попытка была

Poly [(x,y)::xs]

, но я знаю, что это совершенно неправильно, я просто пытаюсь сформулировать это.

1 Ответ

2 голосов
/ 10 февраля 2020

Есть два способа написать список (и шаблон списка). Если вы используете оператор ::, у вас может быть произвольный список в конце вашего шаблона. Если вы используете нотацию [ ... ], ваш шаблон будет соответствовать только списку указанной длины c.

Вы смешиваете эти два типа шаблонов, что не то, что вам нужно. (Конечно, вы можете смешивать их при сопоставлении с соответствующим типом.)

Ваш шаблон должен (скорее всего) выглядеть следующим образом: Poly ((x, y) :: xs). Обратите внимание на круглые скобки вокруг тела шаблона. Оператор :: имеет более низкий приоритет, чем применение Poly. Так что вам нужны скобки.

...