{-# LANGUAGE CPP #-} #if !defined(TESTING) && defined(__GLASGOW_HASKELL__) {-# LANGUAGE Safe #-} #endif #include "containers.h" -- | A strict pair module Utils.Containers.Internal.StrictPair (StrictPair(..), toPair) where -- | The same as a regular Haskell pair, but -- -- @ -- (x :*: _|_) = (_|_ :*: y) = _|_ -- @ data StrictPair a b = !a :*: !b infixr 1 :*: -- | Convert a strict pair to a standard pair. toPair :: StrictPair a b -> (a, b) toPair :: StrictPair a b -> (a, b) toPair (a x :*: b y) = (a x, b y) {-# INLINE toPair #-}