-- |
-- Module    : Z3.Common
-- Copyright : (c) Iago Abal, 2013-2015
--             (c) David Castro, 2013
-- License   : BSD3
-- Maintainer: Iago Abal <mail@iagoabal.eu>,
--             David Castro <david.castro.dcp@gmail.com>
--
-- Common utils for other modules.
--
--

module Z3.Common where

-- | Wraps a monadic value in a Maybe as indicated by a boolean flag
returnValueToMaybe :: Monad m => Bool -> m a -> m (Maybe a)
returnValueToMaybe :: forall (m :: * -> *) a. Monad m => Bool -> m a -> m (Maybe a)
returnValueToMaybe Bool
success m a
m = if Bool
success then do
                                 a
val <- m a
m
                                 Maybe a -> m (Maybe a)
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return (Maybe a -> m (Maybe a)) -> Maybe a -> m (Maybe a)
forall a b. (a -> b) -> a -> b
$ a -> Maybe a
forall a. a -> Maybe a
Just a
val
                               else
                                 Maybe a -> m (Maybe a)
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe a
forall a. Maybe a
Nothing