In Haskell, is there a way to compare that all wildcards are of the same type and value? For example, I want to create a function that exhibits the following behavior:
(1 M) (2 M) (3 M) -> True
(1 S) (2 S) (3 S) -> True
(1 S) (2 M) (3 S) -> False
In other words, the first parameter should be 1, 2 and 3 and the second parameter should be all S or all M.
In this case, we can maybe write a function as follows:
matches (1 _ ) (2 _ ) (3 _ )
But, how do we determine whether the wildcards are all S or all M?