-enumDeltaInteger x d = x `seq` x : enumDeltaInteger (x+d) d
- -- strict accumulator, as for Int
- -- so, head (drop 1000000 [1 .. ] works
- -- patch by Don Stewart <dons@galois.com>
-
+enumDeltaInteger x d = x `seq` (x : enumDeltaInteger (x+d) d)
+-- strict accumulator, so
+-- head (drop 1000000 [1 .. ]
+-- works
+
+{-# NOINLINE [0] enumDeltaToIntegerFB #-}
+-- Don't inline this until RULE "enumDeltaToInteger" has had a chance to fire
+enumDeltaToIntegerFB :: (Integer -> a -> a) -> a
+ -> Integer -> Integer -> Integer -> a