I just wondered whether it's possible to match against the same values for multiple times with the pattern matching facilities of functional programming languages (Haskell/F#/Caml).
Just think of the following example:
plus a a = 2 * a
plus a b = a + b
The first variant would be called when the function is invoked with two similar values (which would be stored in a
).
A more useful application would be this (simplifying an AST).
simplify (Add a a) = Mult 2 a
But Haskell rejects these codes and warns me of conflicting definitions for a
- I have to do explicit case/if-checks instead to find out whether the function got identical values. Is there any trick to indicate that a variable I want to match against will occur multiple times?