relude-1.2.1.0: Safe, performant, user-friendly and lightweight Haskell Standard Library
Copyright(c) 2016 Stephen Diehl
(c) 2016-2018 Serokell
(c) 2018-2023 Kowainik
LicenseMIT
MaintainerKowainik <xrom.xkov@gmail.com>
StabilityStable
PortabilityPortable
Safe HaskellSafe
LanguageHaskell2010

Relude.DeepSeq

Contents

Description

This module contains useful functions to evaluate expressions to weak-head normal form (WHNF) or just normal form (NF). Useful to force traces or errors inside monadic computations or to remove space leaks.

Synopsis

Control.DeepSeq reexports

class NFData a where #

Minimal complete definition

Nothing

Methods

rnf :: a -> () #

Instances

Instances details
NFData ByteArray 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: ByteArray -> () #

NFData All 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: All -> () #

NFData Any 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Any -> () #

NFData TypeRep 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: TypeRep -> () #

NFData Unique 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Unique -> () #

NFData Version 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Version -> () #

NFData CBool 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CBool -> () #

NFData CChar 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CChar -> () #

NFData CClock 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CClock -> () #

NFData CDouble 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CDouble -> () #

NFData CFile 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CFile -> () #

NFData CFloat 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CFloat -> () #

NFData CFpos 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CFpos -> () #

NFData CInt 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CInt -> () #

NFData CIntMax 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CIntMax -> () #

NFData CIntPtr 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CIntPtr -> () #

NFData CJmpBuf 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CJmpBuf -> () #

NFData CLLong 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CLLong -> () #

NFData CLong 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CLong -> () #

NFData CPtrdiff 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CPtrdiff -> () #

NFData CSChar 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CSChar -> () #

NFData CSUSeconds 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CSUSeconds -> () #

NFData CShort 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CShort -> () #

NFData CSigAtomic 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CSigAtomic -> () #

NFData CSize 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CSize -> () #

NFData CTime 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CTime -> () #

NFData CUChar 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CUChar -> () #

NFData CUInt 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CUInt -> () #

NFData CUIntMax 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CUIntMax -> () #

NFData CUIntPtr 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CUIntPtr -> () #

NFData CULLong 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CULLong -> () #

NFData CULong 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CULong -> () #

NFData CUSeconds 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CUSeconds -> () #

NFData CUShort 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CUShort -> () #

NFData CWchar 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CWchar -> () #

NFData Void 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Void -> () #

NFData ThreadId 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: ThreadId -> () #

NFData Fingerprint 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Fingerprint -> () #

NFData MaskingState 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: MaskingState -> () #

NFData ExitCode 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: ExitCode -> () #

NFData Int16 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Int16 -> () #

NFData Int32 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Int32 -> () #

NFData Int64 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Int64 -> () #

NFData Int8 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Int8 -> () #

NFData CallStack 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: CallStack -> () #

NFData SrcLoc 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: SrcLoc -> () #

NFData Word16 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Word16 -> () #

NFData Word32 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Word32 -> () #

NFData Word64 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Word64 -> () #

NFData Word8 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Word8 -> () #

NFData ByteString 
Instance details

Defined in Data.ByteString.Internal.Type

Methods

rnf :: ByteString -> () #

NFData ByteString 
Instance details

Defined in Data.ByteString.Lazy.Internal

Methods

rnf :: ByteString -> () #

NFData ShortByteString 
Instance details

Defined in Data.ByteString.Short.Internal

Methods

rnf :: ShortByteString -> () #

NFData IntSet 
Instance details

Defined in Data.IntSet.Internal

Methods

rnf :: IntSet -> () #

NFData OsChar 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Methods

rnf :: OsChar -> () #

NFData OsString 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Methods

rnf :: OsString -> () #

NFData PosixChar 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Methods

rnf :: PosixChar -> () #

NFData PosixString 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Methods

rnf :: PosixString -> () #

NFData WindowsChar 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Methods

rnf :: WindowsChar -> () #

NFData WindowsString 
Instance details

Defined in System.OsString.Internal.Types.Hidden

Methods

rnf :: WindowsString -> () #

NFData Module 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Module -> () #

NFData Ordering 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Ordering -> () #

NFData TyCon 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: TyCon -> () #

NFData OsChar 
Instance details

Defined in System.OsString.Internal.Types

Methods

rnf :: OsChar -> () #

NFData OsString 
Instance details

Defined in System.OsString.Internal.Types

Methods

rnf :: OsString -> () #

NFData PosixChar 
Instance details

Defined in System.OsString.Internal.Types

Methods

rnf :: PosixChar -> () #

NFData PosixString 
Instance details

Defined in System.OsString.Internal.Types

Methods

rnf :: PosixString -> () #

NFData WindowsChar 
Instance details

Defined in System.OsString.Internal.Types

Methods

rnf :: WindowsChar -> () #

NFData WindowsString 
Instance details

Defined in System.OsString.Internal.Types

Methods

rnf :: WindowsString -> () #

NFData TextDetails 
Instance details

Defined in Text.PrettyPrint.Annotated.HughesPJ

Methods

rnf :: TextDetails -> () #

NFData Doc 
Instance details

Defined in Text.PrettyPrint.HughesPJ

Methods

rnf :: Doc -> () #

NFData UnicodeException 
Instance details

Defined in Data.Text.Encoding.Error

Methods

rnf :: UnicodeException -> () #

NFData Integer 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Integer -> () #

NFData Natural 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Natural -> () #

NFData () 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: () -> () #

NFData Bool 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Bool -> () #

NFData Char 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Char -> () #

NFData Double 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Double -> () #

NFData Float 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Float -> () #

NFData Int 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Int -> () #

NFData Word 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Word -> () #

NFData a => NFData (ZipList a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: ZipList a -> () #

NFData (MutableByteArray s) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: MutableByteArray s -> () #

NFData a => NFData (Complex a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Complex a -> () #

NFData a => NFData (Identity a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Identity a -> () #

NFData a => NFData (First a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: First a -> () #

NFData a => NFData (Last a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Last a -> () #

NFData a => NFData (Down a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Down a -> () #

NFData a => NFData (First a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: First a -> () #

NFData a => NFData (Last a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Last a -> () #

NFData a => NFData (Max a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Max a -> () #

NFData a => NFData (Min a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Min a -> () #

NFData m => NFData (WrappedMonoid m) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: WrappedMonoid m -> () #

NFData a => NFData (Dual a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Dual a -> () #

NFData a => NFData (Product a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Product a -> () #

NFData a => NFData (Sum a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Sum a -> () #

NFData a => NFData (NonEmpty a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: NonEmpty a -> () #

NFData (IORef a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: IORef a -> () #

NFData (MVar a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: MVar a -> () #

NFData (FunPtr a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: FunPtr a -> () #

NFData (Ptr a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Ptr a -> () #

NFData a => NFData (Ratio a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Ratio a -> () #

NFData (StableName a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: StableName a -> () #

NFData a => NFData (IntMap a) 
Instance details

Defined in Data.IntMap.Internal

Methods

rnf :: IntMap a -> () #

NFData a => NFData (Digit a) 
Instance details

Defined in Data.Sequence.Internal

Methods

rnf :: Digit a -> () #

NFData a => NFData (Elem a) 
Instance details

Defined in Data.Sequence.Internal

Methods

rnf :: Elem a -> () #

NFData a => NFData (FingerTree a) 
Instance details

Defined in Data.Sequence.Internal

Methods

rnf :: FingerTree a -> () #

NFData a => NFData (Node a) 
Instance details

Defined in Data.Sequence.Internal

Methods

rnf :: Node a -> () #

NFData a => NFData (Seq a) 
Instance details

Defined in Data.Sequence.Internal

Methods

rnf :: Seq a -> () #

NFData a => NFData (Set a) 
Instance details

Defined in Data.Set.Internal

Methods

rnf :: Set a -> () #

NFData a => NFData (Tree a) 
Instance details

Defined in Data.Tree

Methods

rnf :: Tree a -> () #

NFData a => NFData (Hashed a) 
Instance details

Defined in Data.Hashable.Class

Methods

rnf :: Hashed a -> () #

NFData a => NFData (AnnotDetails a) 
Instance details

Defined in Text.PrettyPrint.Annotated.HughesPJ

Methods

rnf :: AnnotDetails a -> () #

NFData a => NFData (Doc a) 
Instance details

Defined in Text.PrettyPrint.Annotated.HughesPJ

Methods

rnf :: Doc a -> () #

NFData a => NFData (HashSet a) 
Instance details

Defined in Data.HashSet.Internal

Methods

rnf :: HashSet a -> () #

NFData a => NFData (Maybe a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Maybe a -> () #

NFData a => NFData (a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a) -> () #

NFData a => NFData [a] 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: [a] -> () #

(NFData a, NFData b) => NFData (Either a b) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Either a b -> () #

NFData (Fixed a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Fixed a -> () #

NFData (Proxy a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Proxy a -> () #

(NFData a, NFData b) => NFData (Arg a b) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Arg a b -> () #

NFData (TypeRep a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: TypeRep a -> () #

(NFData a, NFData b) => NFData (Array a b) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Array a b -> () #

NFData (STRef s a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: STRef s a -> () #

(NFData k, NFData a) => NFData (Map k a) 
Instance details

Defined in Data.Map.Internal

Methods

rnf :: Map k a -> () #

(NFData k, NFData v) => NFData (HashMap k v) 
Instance details

Defined in Data.HashMap.Internal

Methods

rnf :: HashMap k v -> () #

(NFData k, NFData v) => NFData (Leaf k v) 
Instance details

Defined in Data.HashMap.Internal

Methods

rnf :: Leaf k v -> () #

(NFData a, NFData b) => NFData (a, b) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a, b) -> () #

NFData (a -> b) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a -> b) -> () #

NFData a => NFData (Const a b) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Const a b -> () #

NFData (a :~: b) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a :~: b) -> () #

(NFData a1, NFData a2, NFData a3) => NFData (a1, a2, a3) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a1, a2, a3) -> () #

(NFData1 f, NFData1 g, NFData a) => NFData (Product f g a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Product f g a -> () #

(NFData1 f, NFData1 g, NFData a) => NFData (Sum f g a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Sum f g a -> () #

NFData (a :~~: b) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a :~~: b) -> () #

(NFData a1, NFData a2, NFData a3, NFData a4) => NFData (a1, a2, a3, a4) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a1, a2, a3, a4) -> () #

(NFData1 f, NFData1 g, NFData a) => NFData (Compose f g a) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: Compose f g a -> () #

(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) => NFData (a1, a2, a3, a4, a5) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a1, a2, a3, a4, a5) -> () #

(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) => NFData (a1, a2, a3, a4, a5, a6) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a1, a2, a3, a4, a5, a6) -> () #

(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7) => NFData (a1, a2, a3, a4, a5, a6, a7) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a1, a2, a3, a4, a5, a6, a7) -> () #

(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8) => NFData (a1, a2, a3, a4, a5, a6, a7, a8) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a1, a2, a3, a4, a5, a6, a7, a8) -> () #

(NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8, NFData a9) => NFData (a1, a2, a3, a4, a5, a6, a7, a8, a9) 
Instance details

Defined in Control.DeepSeq

Methods

rnf :: (a1, a2, a3, a4, a5, a6, a7, a8, a9) -> () #

deepseq :: NFData a => a -> b -> b #

force :: NFData a => a -> a #

($!!) :: NFData a => (a -> b) -> a -> b #

Evaluation

evaluateNF :: (NFData a, MonadIO m) => a -> m a Source #

Alias for evaluateWHNF . force with a clearer name.

>>> let list = [1..5] :: [Int]
>>> :sprint list
list = _
>>> () <$ evaluateNF list
>>> :sprint list
list = [1,2,3,4,5]

evaluateNF_ :: (NFData a, MonadIO m) => a -> m () Source #

Alias for evaluateWHNF . rnf. Similar to evaluateNF but discards the resulting value.

>>> let list = [1..5] :: [Int]
>>> :sprint list
list = _
>>> evaluateNF_ list
>>> :sprint list
list = [1,2,3,4,5]

evaluateWHNF :: MonadIO m => a -> m a Source #

Lifted alias for evaluate with a clearer name.

>>> let list = [1..5] :: [Int]
>>> :sprint list
list = _
>>> () <$ evaluateWHNF list
>>> :sprint list
list = 1 : _

evaluateWHNF_ :: MonadIO m => a -> m () Source #

Like evaluateWHNF but discards value.

>>> let list = [1..5] :: [Int]
>>> :sprint list
list = _
>>> evaluateWHNF_ list
>>> :sprint list
list = 1 : _