Move ($!) from Prelude into GHC.Base
authorHerbert Valerio Riedel <hvr@gnu.org>
Sat, 13 Sep 2014 09:56:37 +0000 (11:56 +0200)
committerHerbert Valerio Riedel <hvr@gnu.org>
Sat, 13 Sep 2014 10:01:54 +0000 (12:01 +0200)
I don't see any reason why this needs to be in Prelude, where it makes
life harder to avoid import cycles involving Prelude. Ideally, the
`Prelude` module should only re-export entities from other modules, and
not define anything on its own.

So this moves `($!)` close to the definition of its `($)` cousin.

libraries/base/GHC/Base.lhs
libraries/base/Prelude.hs

index 3ee533d..9fe148e 100644 (file)
@@ -121,7 +121,7 @@ infixr 9  .
 infixr 5  ++
 infixl 4  <$
 infixl 1  >>, >>=
-infixr 0  $
+infixr 0  $, $!
 
 infixl 4 <*>, <*, *>, <**>
 
@@ -841,6 +841,10 @@ flip f x y              =  f y x
 ($)                     :: (a -> b) -> a -> b
 f $ x                   =  f x
 
+-- | Strict (call-by-value) application, defined in terms of 'seq'.
+($!)                    :: (a -> b) -> a -> b
+f $! x                  = let !vx = x in f vx  -- see #2273
+
 -- | @'until' p f@ yields the result of applying @f@ until @p@ holds.
 until                   :: (a -> Bool) -> (a -> a) -> a -> a
 until p f = go
index 12fe189..12a3d8f 100644 (file)
@@ -151,14 +151,6 @@ import GHC.Real
 import GHC.Float
 import GHC.Show
 
-infixr 0 $!
-
--- -----------------------------------------------------------------------------
--- Miscellaneous functions
-
--- | Strict (call-by-value) application, defined in terms of 'seq'.
-($!)    :: (a -> b) -> a -> b
-f $! x  = let !vx = x in f vx  -- see #2273
 
 #ifdef __HADDOCK__
 -- | The value of @'seq' a b@ is bottom if @a@ is bottom, and otherwise