module Hedgehog.Extras.Stock.Monad
  ( forceM
  ) where

import           Control.DeepSeq (NFData, force)
import           Control.Monad

-- | Force the evaluation of the return value in a monadic computation.
forceM :: (Monad m, NFData a) => m a -> m a
forceM :: forall (m :: * -> *) a. (Monad m, NFData a) => m a -> m a
forceM = (forall a. NFData a => a -> a
force forall (m :: * -> *) a b. Monad m => (a -> b) -> m a -> m b
<$!>)