У меня есть funciton say foo:: [Integer] → Bool, но он работает только в том случае, если входящий аргумент действителен для некоторых критериев, иначе он должен немедленно прекратиться.
foo x | not $ isSorted x = False
| otherwise = some_recursive_stuff_here
where
isSorted ax = ax == sort ax
и др.
Но я не хочу проверять инвариант каждый раз, если он отсортирован или нет. Есть ли хороший способ справиться с этим другим, а затем ввести еще одну внутреннюю функцию?