{-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE DataKinds, PolyKinds #-} {-# LANGUAGE KindSignatures #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Data.IORef.ToolsYj (newDefaultIORef, checkFlag) where import Data.Default import Data.Bool import Data.IORef newDefaultIORef :: Default a => IO (IORef a) newDefaultIORef :: forall a. Default a => IO (IORef a) newDefaultIORef = a -> IO (IORef a) forall a. a -> IO (IORef a) newIORef a forall a. Default a => a def checkFlag :: IORef Bool -> IO Bool checkFlag :: IORef Bool -> IO Bool checkFlag IORef Bool flg = IORef Bool -> IO Bool forall a. IORef a -> IO a readIORef IORef Bool flg IO Bool -> (Bool -> IO Bool) -> IO Bool forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= IO Bool -> IO Bool -> Bool -> IO Bool forall a. a -> a -> Bool -> a bool (Bool -> IO Bool forall a. a -> IO a forall (f :: * -> *) a. Applicative f => a -> f a pure Bool False) (Bool True Bool -> IO () -> IO Bool forall a b. a -> IO b -> IO a forall (f :: * -> *) a b. Functor f => a -> f b -> f a <$ IORef Bool -> Bool -> IO () forall a. IORef a -> a -> IO () writeIORef IORef Bool flg Bool False)