diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.5.2
+
+* Expose `bool`
+
 ## 0.5.1
 
 * Expose `asum`
diff --git a/CorePrelude.hs b/CorePrelude.hs
--- a/CorePrelude.hs
+++ b/CorePrelude.hs
@@ -110,6 +110,8 @@
     , Control.Arrow.second
     , (Control.Arrow.***)
     , (Control.Arrow.&&&)
+      -- ** Bool
+    , bool
       -- ** Maybe
     , Data.Maybe.mapMaybe
     , Data.Maybe.catMaybes
@@ -229,6 +231,10 @@
 import System.IO.Error hiding (catch, try)
 import qualified GHC.Exts
 
+#if MIN_VERSION_base(4,7,0)
+import Data.Bool (bool)
+#endif
+
 #if MIN_VERSION_base(4,5,0)
 import Data.Monoid ((<>))
 #endif
@@ -238,6 +244,11 @@
 type UVector = Data.Vector.Unboxed.Vector
 type SVector = Data.Vector.Storable.Vector
 
+
+#if !MIN_VERSION_base(4,7,0)
+bool :: a -> a -> Bool -> a
+bool f t b = if b then t else f
+#endif
 
 #if !MIN_VERSION_base(4,5,0)
 
diff --git a/basic-prelude.cabal b/basic-prelude.cabal
--- a/basic-prelude.cabal
+++ b/basic-prelude.cabal
@@ -1,5 +1,5 @@
 name:                basic-prelude
-version:             0.5.1
+version:             0.5.2
 synopsis:            An enhanced core prelude; a common foundation for alternate preludes.
 description:
     The premise of @basic-prelude@ is that there are a lot of very commonly desired features missing from the standard @Prelude@, such as commonly used operators (@\<$\>@ and @>=>@, for instance) and imports for common datatypes (e.g., @ByteString@ and @Vector@). At the same time, there are lots of other components which are more debatable, such as providing polymorphic versions of common functions.
