singletons-base-3.0: A promoted and singled version of the base library
Copyright(C) 2013 Richard Eisenberg
LicenseBSD-style (see LICENSE)
MaintainerRyan Scott
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.Singletons.Base.SomeSing

Description

Provides the SomeSing data type along with instances of Eq, Ord, etc., which are defined as orphans due to SomeSing originally being defined in a separate library (singletons).

Synopsis

Documentation

data SomeSing k where #

An existentially-quantified singleton. This type is useful when you want a singleton type, but there is no way of knowing, at compile-time, what the type index will be. To make use of this type, you will generally have to use a pattern-match:

foo :: Bool -> ...
foo b = case toSing b of
          SomeSing sb -> {- fancy dependently-typed code with sb -}

An example like the one above may be easier to write using withSomeSing.

Constructors

SomeSing :: forall k (a :: k). Sing a -> SomeSing k 

Instances

Instances details
SBounded k => Bounded (SomeSing k) Source # 
Instance details

Defined in Data.Singletons.Base.SomeSing

SEnum k => Enum (SomeSing k) Source # 
Instance details

Defined in Data.Singletons.Base.SomeSing

SEq k => Eq (SomeSing k) Source # 
Instance details

Defined in Data.Singletons.Base.SomeSing

Methods

(==) :: SomeSing k -> SomeSing k -> Bool #

(/=) :: SomeSing k -> SomeSing k -> Bool #

SNum k => Num (SomeSing k) Source # 
Instance details

Defined in Data.Singletons.Base.SomeSing

SOrd k => Ord (SomeSing k) Source # 
Instance details

Defined in Data.Singletons.Base.SomeSing

Methods

compare :: SomeSing k -> SomeSing k -> Ordering #

(<) :: SomeSing k -> SomeSing k -> Bool #

(<=) :: SomeSing k -> SomeSing k -> Bool #

(>) :: SomeSing k -> SomeSing k -> Bool #

(>=) :: SomeSing k -> SomeSing k -> Bool #

max :: SomeSing k -> SomeSing k -> SomeSing k #

min :: SomeSing k -> SomeSing k -> SomeSing k #

ShowSing k => Show (SomeSing k) Source # 
Instance details

Defined in Data.Singletons.Base.SomeSing

Methods

showsPrec :: Int -> SomeSing k -> ShowS #

show :: SomeSing k -> String #

showList :: [SomeSing k] -> ShowS #

SIsString k => IsString (SomeSing k) Source # 
Instance details

Defined in Data.Singletons.Base.SomeSing

Methods

fromString :: String -> SomeSing k #

SSemigroup k => Semigroup (SomeSing k) Source # 
Instance details

Defined in Data.Singletons.Base.SomeSing

Methods

(<>) :: SomeSing k -> SomeSing k -> SomeSing k #

sconcat :: NonEmpty (SomeSing k) -> SomeSing k #

stimes :: Integral b => b -> SomeSing k -> SomeSing k #

SMonoid k => Monoid (SomeSing k) Source # 
Instance details

Defined in Data.Singletons.Base.SomeSing

Methods

mempty :: SomeSing k #

mappend :: SomeSing k -> SomeSing k -> SomeSing k #

mconcat :: [SomeSing k] -> SomeSing k #

Orphan instances

SBounded k => Bounded (SomeSing k) Source # 
Instance details

SEnum k => Enum (SomeSing k) Source # 
Instance details

SEq k => Eq (SomeSing k) Source # 
Instance details

Methods

(==) :: SomeSing k -> SomeSing k -> Bool #

(/=) :: SomeSing k -> SomeSing k -> Bool #

SNum k => Num (SomeSing k) Source # 
Instance details

SOrd k => Ord (SomeSing k) Source # 
Instance details

Methods

compare :: SomeSing k -> SomeSing k -> Ordering #

(<) :: SomeSing k -> SomeSing k -> Bool #

(<=) :: SomeSing k -> SomeSing k -> Bool #

(>) :: SomeSing k -> SomeSing k -> Bool #

(>=) :: SomeSing k -> SomeSing k -> Bool #

max :: SomeSing k -> SomeSing k -> SomeSing k #

min :: SomeSing k -> SomeSing k -> SomeSing k #

ShowSing k => Show (SomeSing k) Source # 
Instance details

Methods

showsPrec :: Int -> SomeSing k -> ShowS #

show :: SomeSing k -> String #

showList :: [SomeSing k] -> ShowS #

SIsString k => IsString (SomeSing k) Source # 
Instance details

Methods

fromString :: String -> SomeSing k #

SSemigroup k => Semigroup (SomeSing k) Source # 
Instance details

Methods

(<>) :: SomeSing k -> SomeSing k -> SomeSing k #

sconcat :: NonEmpty (SomeSing k) -> SomeSing k #

stimes :: Integral b => b -> SomeSing k -> SomeSing k #

SMonoid k => Monoid (SomeSing k) Source # 
Instance details

Methods

mempty :: SomeSing k #

mappend :: SomeSing k -> SomeSing k -> SomeSing k #

mconcat :: [SomeSing k] -> SomeSing k #