Copyright | (C) 2013 Richard Eisenberg |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | Ryan Scott |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe-Inferred |
Language | GHC2021 |
Documentation
data SomeSing k where Source #
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
.
Instances
SIsString k => IsString (SomeSing k) Source # | |
Defined in Data.Singletons.Base.SomeSing fromString :: String -> SomeSing k # | |
SMonoid k => Monoid (SomeSing k) Source # | |
SSemigroup k => Semigroup (SomeSing k) Source # | |
SBounded k => Bounded (SomeSing k) Source # | |
SEnum k => Enum (SomeSing k) Source # | |
Defined in Data.Singletons.Base.SomeSing succ :: SomeSing k -> SomeSing k # pred :: SomeSing k -> SomeSing k # fromEnum :: SomeSing k -> Int # enumFrom :: SomeSing k -> [SomeSing k] # enumFromThen :: SomeSing k -> SomeSing k -> [SomeSing k] # enumFromTo :: SomeSing k -> SomeSing k -> [SomeSing k] # enumFromThenTo :: SomeSing k -> SomeSing k -> SomeSing k -> [SomeSing k] # | |
SNum k => Num (SomeSing k) Source # | |
Defined in Data.Singletons.Base.SomeSing | |
ShowSing k => Show (SomeSing k) Source # | |
SEq k => Eq (SomeSing k) Source # | |
SOrd k => Ord (SomeSing k) Source # | |
Defined in Data.Singletons.Base.SomeSing |
Orphan instances
SIsString k => IsString (SomeSing k) Source # | |
fromString :: String -> SomeSing k # | |
SMonoid k => Monoid (SomeSing k) Source # | |
SSemigroup k => Semigroup (SomeSing k) Source # | |
SBounded k => Bounded (SomeSing k) Source # | |
SEnum k => Enum (SomeSing k) Source # | |
succ :: SomeSing k -> SomeSing k # pred :: SomeSing k -> SomeSing k # fromEnum :: SomeSing k -> Int # enumFrom :: SomeSing k -> [SomeSing k] # enumFromThen :: SomeSing k -> SomeSing k -> [SomeSing k] # enumFromTo :: SomeSing k -> SomeSing k -> [SomeSing k] # enumFromThenTo :: SomeSing k -> SomeSing k -> SomeSing k -> [SomeSing k] # | |
SNum k => Num (SomeSing k) Source # | |
ShowSing k => Show (SomeSing k) Source # | |
SEq k => Eq (SomeSing k) Source # | |
SOrd k => Ord (SomeSing k) Source # | |