Шаблон соответствует одинаковым значениям

Мне просто интересно, можно ли сопоставлять одни и те же значения несколько раз с помощью средств сопоставления с образцом функциональных языков программирования (Haskell / F # / Caml).

Просто подумайте о следующем примере:

plus a a = 2 * a
plus a b = a + b

Первый вариант будет вызван, когда функция вызывается с двумя одинаковыми значениями (которые будут храниться вa).

Более полезным приложением было бы это (упрощение AST).

simplify (Add a a) = Mult 2 a

Но Хаскелл отвергает эти коды и предупреждает меня оconflicting definitions for a - Я должен сделать явные проверки case / if вместо этого, чтобы выяснить, получила ли функция одинаковые значения. Есть ли уловка, чтобы указать, что переменная, с которой я хочу сопоставить, будет встречаться несколько раз?

Ответы на вопрос(5)

Ваш ответ на вопрос