-- so such literals have type @('Num' a) => a@.
fromInteger :: Integer -> a
+ {-# INLINE (-) #-}
+ {-# INLINE negate #-}
x - y = x + negate y
negate x = 0 - x
-- 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
enumDeltaToIntegerFB c n x delta lim