Try [10,9..1] instead of [10..1]
[10..1] desugars before enumFromTo
[10,9..1] desugars before enumFromThenTo
Notice how functions behave in GHCI:
Prelude> [10..1] [] Prelude> [10,9..1] [10,9,8,7,6,5,4,3,2,1] Prelude> :t enumFromTo enumFromTo :: Enum a => a -> a -> [a] Prelude> :t enumFromThenTo enumFromThenTo :: Enum a => a -> a -> a -> [a] Prelude> enumFromTo 10 1 [] Prelude> :t enumFromThenTo 10 9 1 [10,9,8,7,6,5,4,3,2,1]
The new behavior that you implemented in (.:.) Will rarely be a desirable default, since the lists generated in this way can no longer be considered always in ascending order. Therefore, you must make your downward intent explicit with [x,(pred x)..y] or enumFromThenTo .
recursion.ninja
source share