safe-0.3.12: Safe/Partial.hs
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE ImplicitParams #-}
-- | ConstraintKind synonym for marking partial functions
module Safe.Partial(
Partial
) where
#if __GLASGOW_HASKELL__ < 710
import GHC.Exts (Constraint)
#elif __GLASGOW_HASKELL__ < 800
import GHC.Stack (CallStack)
#else
import GHC.Stack (HasCallStack)
#endif
-- | A constraint synonym which denotes that the function is partial, and will
-- (on GHC 8.* and up) produce a stack trace on failure.
-- You may mark your own non-total functions as Partial, if necessary, and this
-- will ensure that they produce useful stack traces.
#if __GLASGOW_HASKELL__ < 710
type Partial = (() :: Constraint)
#elif __GLASGOW_HASKELL__ < 800
type Partial = (?loc :: CallStack)
#else
type Partial = HasCallStack
#endif