Haskell has no way of knowing that you want to take step -1 until you give it a hint.
There may be situations when you need a range [x..y] where y < x and where you expect the range to be empty. This would create subtle errors if Haskell simply went down in these cases.
source share