type-combinators-0.2.4.3: A collection of data types for type-level programming

CopyrightCopyright (C) 2015 Kyle Carter
LicenseBSD3
MaintainerKyle Carter <kylcarte@indiana.edu>
Stabilityexperimental
PortabilityRankNTypes
Safe HaskellNone
LanguageHaskell2010

Data.Type.Option

Description

A type combinator for type-level Maybes, lifting (f :: k -> *) to (Option f :: Maybe k -> *).

Synopsis

Documentation

data Option f :: Maybe k -> * where Source #

Constructors

Nothing_ :: Option f Nothing 
Just_ :: !(f a) -> Option f (Just a) 

Instances

(Witness p q (f a), (~) (Maybe k) x (Just k a)) => Witness p q (Option k f x) Source # 

Associated Types

type WitnessC (p :: Constraint) (q :: Constraint) (Option k f x) :: Constraint Source #

Methods

(\\) :: p => (q -> r) -> Option k f x -> r Source #

Traversable1 (Maybe k) k (Option k) Source # 

Methods

traverse1 :: Applicative h => (forall a. f a -> h (g a)) -> t f b -> h (t g b) Source #

Foldable1 (Maybe k) k (Option k) Source # 

Methods

foldMap1 :: Monoid m => (forall a. f a -> m) -> t f b -> m Source #

Functor1 (Maybe k) k (Option k) Source #

We can take a natural transformation of (forall x. f x -> g x) to a natural transformation of (forall mx. Option f mx -> Option g mx).

Methods

map1 :: (forall a. f a -> g a) -> t f b -> t g b Source #

Known (Maybe k) (Option k f) (Nothing k) Source # 

Associated Types

type KnownC (Option k f) (Nothing k :: Option k f -> *) (a :: Option k f) :: Constraint Source #

Methods

known :: Nothing k a Source #

Known a f a1 => Known (Maybe a) (Option a f) (Just a a1) Source # 

Associated Types

type KnownC (Option a f) (Just a a1 :: Option a f -> *) (a :: Option a f) :: Constraint Source #

Methods

known :: Just a a1 a Source #

MaybeC ((<$>) Constraint * Eq ((<$>) * k f m)) => Eq (Option k f m) Source # 

Methods

(==) :: Option k f m -> Option k f m -> Bool #

(/=) :: Option k f m -> Option k f m -> Bool #

(MaybeC ((<$>) Constraint * Eq ((<$>) * k f m)), MaybeC ((<$>) Constraint * Ord ((<$>) * k f m))) => Ord (Option k f m) Source # 

Methods

compare :: Option k f m -> Option k f m -> Ordering #

(<) :: Option k f m -> Option k f m -> Bool #

(<=) :: Option k f m -> Option k f m -> Bool #

(>) :: Option k f m -> Option k f m -> Bool #

(>=) :: Option k f m -> Option k f m -> Bool #

max :: Option k f m -> Option k f m -> Option k f m #

min :: Option k f m -> Option k f m -> Option k f m #

MaybeC ((<$>) Constraint * Show ((<$>) * k f m)) => Show (Option k f m) Source # 

Methods

showsPrec :: Int -> Option k f m -> ShowS #

show :: Option k f m -> String #

showList :: [Option k f m] -> ShowS #

type WitnessC p q (Option k f x) Source # 
type WitnessC p q (Option k f x) = Witness p q (f (FromJust k x))
type KnownC (Maybe k) (Option k f) (Nothing k) Source # 
type KnownC (Maybe k) (Option k f) (Nothing k) = ØC
type KnownC (Maybe a) (Option a f) (Just a a1) Source # 
type KnownC (Maybe a) (Option a f) (Just a a1) = Known a f a1

option :: (forall a. m ~ Just a => f a -> r) -> (m ~ Nothing => r) -> Option f m -> r Source #

Eliminator for Option f.