Used in Haskell's translation of
[n,n'..m] with
[n,n'..m]
= enumFromThenTo n n' m, a possible implementation being
enumFromThenTo n n' m = worker (f x) (c x) n m,
x =
fromEnum n' - fromEnum n,
c x = bool (>=) ((x
0) f n y | n > 0 = f (n - 1) (succ y) | n < 0 = f (n +
1) (pred y) | otherwise = y and
worker s c v m | c v m = v :
worker s c (s v) m | otherwise = [] For example:
enumFromThenTo 4 2 -6 :: [Integer] =
[4,2,0,-2,-4,-6]
enumFromThenTo 6 8 2 :: [Int] = []