diff --git a/Data/Pool.hs b/Data/Pool.hs
--- a/Data/Pool.hs
+++ b/Data/Pool.hs
@@ -295,7 +295,7 @@
 -- returns immediately with 'Nothing' (ie. the action function is /not/ called).
 -- Conversely, if a resource can be borrowed from the pool without blocking, the
 -- action is performed and it's result is returned, wrapped in a 'Just'.
-tryWithResource ::
+tryWithResource :: forall m a b.
 #if MIN_VERSION_monad_control(0,3,0)
     (MonadBaseControl IO m)
 #else
@@ -310,7 +310,7 @@
                 destroyResource pool local resource
       putResource local resource
       return ret
-    Nothing -> restore . runInIO $ return Nothing
+    Nothing -> restore . runInIO $ return (Nothing :: Maybe b)
 #if __GLASGOW_HASKELL__ >= 700
 {-# INLINABLE tryWithResource #-}
 #endif
diff --git a/resource-pool.cabal b/resource-pool.cabal
--- a/resource-pool.cabal
+++ b/resource-pool.cabal
@@ -1,5 +1,5 @@
 name:                resource-pool
-version:             0.2.3.1
+version:             0.2.3.2
 synopsis:            A high-performance striped resource pooling implementation
 description:
   A high-performance striped pooling abstraction for managing
