Wzór pasujący do identycznych wartości

Właśnie zastanawiałem się, czy możliwe jest wielokrotne dopasowanie do tych samych wartości za pomocą funkcji dopasowywania wzorców funkcjonalnych języków programowania (Haskell / F # / Caml).

Pomyśl tylko o następującym przykładzie:

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

Pierwszy wariant zostanie wywołany, gdy funkcja zostanie wywołana z dwiema podobnymi wartościami (które byłyby przechowywane wa).

Bardziej użyteczna byłaby ta aplikacja (upraszczająca AST).

simplify (Add a a) = Mult 2 a

Ale Haskell odrzuca te kody i ostrzega mnie przedsprzeczne definicje dlaa - Muszę zamiast tego wykonać jawne sprawdzenie / sprawdzanie, czy funkcja ma identyczne wartości. Czy jest jakaś sztuczka wskazująca, że ​​zmienna, którą chcę dopasować, wystąpi wiele razy?

questionAnswers(5)

yourAnswerToTheQuestion