Для этого вы можете использовать permutations
(в модуле Data.List
).
Вот сигнатура функции для permutations
:
permutations :: [a] -> [[a]]
Как видите, он возвращает список списков.Вот небольшой пример (с использованием GHCi 7.0.4):
> permutations [1..3]<br>
[[1,2,3],[2,1,3],[3,2,1],[2,3,1],[3,1,2],[1,3,2]]
Таким образом, вы можете сделать что-то вроде:
prop_unique_elements = forAll (elements (permutations [1..3])) $ \x -> foo == bar
Я не проверял это, поэтому нужно немного помассировать, но я надеюсь, что это ясно говорит об этом.Удачи.