packages feed

wgpu-hs-0.1.0.0: src-internal/WGPU/Internal/SMaybe.hs

-- |
-- Module      : WGPU.Internal.SMaybe
-- Description : Strict maybe.
module WGPU.Internal.SMaybe
  ( -- * Types
    SMaybe (SNothing, SJust),

    -- * Functions
    fromSMaybe,
  )
where

-- | Strict version of the 'Maybe' type.
data SMaybe a
  = SNothing
  | SJust !a
  deriving (Eq, Show)

-- | Return a value from an 'SMaybe' with a default.
--
-- This function returns the 'SJust' value from an 'SMaybe', or the default
-- value if the 'SMaybe' is 'SNothing'.
fromSMaybe ::
  -- | Default value.
  a ->
  -- | 'SMaybe' from which to return the 'SJust' value if possible.
  SMaybe a ->
  -- | 'SJust' value, if present, or the default value, if not.
  a
fromSMaybe defaultValue sMaybe =
  case sMaybe of
    SNothing -> defaultValue
    SJust providedValue -> providedValue