singletons-2.2: A framework for generating singleton types

Copyright(C) 2014 Jan Stolarek Richard Eisenberg
LicenseBSD-style (see LICENSE)
MaintainerJan Stolarek (jan.stolarek@p.lodz.pl)
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.Promotion.Prelude.Enum

Contents

Description

Exports promoted versions of Enum and Bounded

Synopsis

Documentation

class (kproxy ~ Proxy) => PBounded kproxy #

Associated Types

type MinBound :: a #

type MaxBound :: a #

Instances

PBounded Bool (Proxy * Bool) # 

Associated Types

type MinBound (Proxy * Bool) :: a #

type MaxBound (Proxy * Bool) :: a #

PBounded Ordering (Proxy * Ordering) # 

Associated Types

type MinBound (Proxy * Ordering) :: a #

type MaxBound (Proxy * Ordering) :: a #

PBounded () (Proxy * ()) # 

Associated Types

type MinBound (Proxy * ()) :: a #

type MaxBound (Proxy * ()) :: a #

PBounded (a0, b0) (Proxy * (a0, b0)) # 

Associated Types

type MinBound (Proxy * (a0, b0)) :: a #

type MaxBound (Proxy * (a0, b0)) :: a #

PBounded (a0, b0, c0) (Proxy * (a0, b0, c0)) # 

Associated Types

type MinBound (Proxy * (a0, b0, c0)) :: a #

type MaxBound (Proxy * (a0, b0, c0)) :: a #

PBounded (a0, b0, c0, d0) (Proxy * (a0, b0, c0, d0)) # 

Associated Types

type MinBound (Proxy * (a0, b0, c0, d0)) :: a #

type MaxBound (Proxy * (a0, b0, c0, d0)) :: a #

PBounded (a0, b0, c0, d0, e0) (Proxy * (a0, b0, c0, d0, e0)) # 

Associated Types

type MinBound (Proxy * (a0, b0, c0, d0, e0)) :: a #

type MaxBound (Proxy * (a0, b0, c0, d0, e0)) :: a #

PBounded (a0, b0, c0, d0, e0, f0) (Proxy * (a0, b0, c0, d0, e0, f0)) # 

Associated Types

type MinBound (Proxy * (a0, b0, c0, d0, e0, f0)) :: a #

type MaxBound (Proxy * (a0, b0, c0, d0, e0, f0)) :: a #

PBounded (a0, b0, c0, d0, e0, f0, g0) (Proxy * (a0, b0, c0, d0, e0, f0, g0)) # 

Associated Types

type MinBound (Proxy * (a0, b0, c0, d0, e0, f0, g0)) :: a #

type MaxBound (Proxy * (a0, b0, c0, d0, e0, f0, g0)) :: a #

class (kproxy ~ Proxy) => PEnum kproxy #

Associated Types

type Succ (arg :: a) :: a #

type Pred (arg :: a) :: a #

type ToEnum (arg :: Nat) :: a #

type FromEnum (arg :: a) :: Nat #

type EnumFromTo (arg :: a) (arg :: a) :: [a] #

type EnumFromThenTo (arg :: a) (arg :: a) (arg :: a) :: [a] #

Instances

PEnum Bool (Proxy * Bool) # 

Associated Types

type Succ (Proxy * Bool) (arg :: Proxy * Bool) :: a #

type Pred (Proxy * Bool) (arg :: Proxy * Bool) :: a #

type ToEnum (Proxy * Bool) (arg :: Nat) :: a #

type FromEnum (Proxy * Bool) (arg :: Proxy * Bool) :: Nat #

type EnumFromTo (Proxy * Bool) (arg :: Proxy * Bool) (arg :: Proxy * Bool) :: [a] #

type EnumFromThenTo (Proxy * Bool) (arg :: Proxy * Bool) (arg :: Proxy * Bool) (arg :: Proxy * Bool) :: [a] #

PEnum Ordering (Proxy * Ordering) # 

Associated Types

type Succ (Proxy * Ordering) (arg :: Proxy * Ordering) :: a #

type Pred (Proxy * Ordering) (arg :: Proxy * Ordering) :: a #

type ToEnum (Proxy * Ordering) (arg :: Nat) :: a #

type FromEnum (Proxy * Ordering) (arg :: Proxy * Ordering) :: Nat #

type EnumFromTo (Proxy * Ordering) (arg :: Proxy * Ordering) (arg :: Proxy * Ordering) :: [a] #

type EnumFromThenTo (Proxy * Ordering) (arg :: Proxy * Ordering) (arg :: Proxy * Ordering) (arg :: Proxy * Ordering) :: [a] #

PEnum Nat (Proxy * Nat) # 

Associated Types

type Succ (Proxy * Nat) (arg :: Proxy * Nat) :: a #

type Pred (Proxy * Nat) (arg :: Proxy * Nat) :: a #

type ToEnum (Proxy * Nat) (arg :: Nat) :: a #

type FromEnum (Proxy * Nat) (arg :: Proxy * Nat) :: Nat #

type EnumFromTo (Proxy * Nat) (arg :: Proxy * Nat) (arg :: Proxy * Nat) :: [a] #

type EnumFromThenTo (Proxy * Nat) (arg :: Proxy * Nat) (arg :: Proxy * Nat) (arg :: Proxy * Nat) :: [a] #

PEnum () (Proxy * ()) # 

Associated Types

type Succ (Proxy * ()) (arg :: Proxy * ()) :: a #

type Pred (Proxy * ()) (arg :: Proxy * ()) :: a #

type ToEnum (Proxy * ()) (arg :: Nat) :: a #

type FromEnum (Proxy * ()) (arg :: Proxy * ()) :: Nat #

type EnumFromTo (Proxy * ()) (arg :: Proxy * ()) (arg :: Proxy * ()) :: [a] #

type EnumFromThenTo (Proxy * ()) (arg :: Proxy * ()) (arg :: Proxy * ()) (arg :: Proxy * ()) :: [a] #

Defunctionalization symbols

data SuccSym0 l #

Instances

SuppressUnusedWarnings (TyFun a6989586621679612097 a6989586621679612097 -> *) (SuccSym0 a6989586621679612097) # 

Methods

suppressUnusedWarnings :: Proxy (SuccSym0 a6989586621679612097) t -> () #

type Apply a6989586621679612097 a6989586621679612097 (SuccSym0 a6989586621679612097) l0 # 
type Apply a6989586621679612097 a6989586621679612097 (SuccSym0 a6989586621679612097) l0 = SuccSym1 a6989586621679612097 l0

type SuccSym1 t = Succ t #

data PredSym0 l #

Instances

SuppressUnusedWarnings (TyFun a6989586621679612097 a6989586621679612097 -> *) (PredSym0 a6989586621679612097) # 

Methods

suppressUnusedWarnings :: Proxy (PredSym0 a6989586621679612097) t -> () #

type Apply a6989586621679612097 a6989586621679612097 (PredSym0 a6989586621679612097) l0 # 
type Apply a6989586621679612097 a6989586621679612097 (PredSym0 a6989586621679612097) l0 = PredSym1 a6989586621679612097 l0

type PredSym1 t = Pred t #

data ToEnumSym0 l #

Instances

SuppressUnusedWarnings (TyFun Nat a6989586621679612097 -> *) (ToEnumSym0 a6989586621679612097) # 

Methods

suppressUnusedWarnings :: Proxy (ToEnumSym0 a6989586621679612097) t -> () #

type Apply Nat k2 (ToEnumSym0 k2) l0 # 
type Apply Nat k2 (ToEnumSym0 k2) l0 = ToEnumSym1 k2 l0

type ToEnumSym1 t = ToEnum t #

data FromEnumSym0 l #

Instances

SuppressUnusedWarnings (TyFun a6989586621679612097 Nat -> *) (FromEnumSym0 a6989586621679612097) # 

Methods

suppressUnusedWarnings :: Proxy (FromEnumSym0 a6989586621679612097) t -> () #

type Apply a6989586621679612097 Nat (FromEnumSym0 a6989586621679612097) l0 # 
type Apply a6989586621679612097 Nat (FromEnumSym0 a6989586621679612097) l0 = FromEnumSym1 a6989586621679612097 l0

data EnumFromToSym0 l #

Instances

SuppressUnusedWarnings (TyFun a6989586621679612097 (TyFun a6989586621679612097 [a6989586621679612097] -> Type) -> *) (EnumFromToSym0 a6989586621679612097) # 

Methods

suppressUnusedWarnings :: Proxy (EnumFromToSym0 a6989586621679612097) t -> () #

type Apply a6989586621679612097 (TyFun a6989586621679612097 [a6989586621679612097] -> Type) (EnumFromToSym0 a6989586621679612097) l0 # 
type Apply a6989586621679612097 (TyFun a6989586621679612097 [a6989586621679612097] -> Type) (EnumFromToSym0 a6989586621679612097) l0 = EnumFromToSym1 a6989586621679612097 l0

data EnumFromToSym1 l l #

Instances

SuppressUnusedWarnings (a6989586621679612097 -> TyFun a6989586621679612097 [a6989586621679612097] -> *) (EnumFromToSym1 a6989586621679612097) # 

Methods

suppressUnusedWarnings :: Proxy (EnumFromToSym1 a6989586621679612097) t -> () #

type Apply a6989586621679612097 [a6989586621679612097] (EnumFromToSym1 a6989586621679612097 l0) l1 # 
type Apply a6989586621679612097 [a6989586621679612097] (EnumFromToSym1 a6989586621679612097 l0) l1 = EnumFromToSym2 a6989586621679612097 l0 l1

type EnumFromToSym2 t t = EnumFromTo t t #

data EnumFromThenToSym0 l #

Instances

SuppressUnusedWarnings (TyFun a6989586621679612097 (TyFun a6989586621679612097 (TyFun a6989586621679612097 [a6989586621679612097] -> Type) -> Type) -> *) (EnumFromThenToSym0 a6989586621679612097) # 

Methods

suppressUnusedWarnings :: Proxy (EnumFromThenToSym0 a6989586621679612097) t -> () #

type Apply a6989586621679612097 (TyFun a6989586621679612097 (TyFun a6989586621679612097 [a6989586621679612097] -> Type) -> Type) (EnumFromThenToSym0 a6989586621679612097) l0 # 
type Apply a6989586621679612097 (TyFun a6989586621679612097 (TyFun a6989586621679612097 [a6989586621679612097] -> Type) -> Type) (EnumFromThenToSym0 a6989586621679612097) l0 = EnumFromThenToSym1 a6989586621679612097 l0

data EnumFromThenToSym1 l l #

Instances

SuppressUnusedWarnings (a6989586621679612097 -> TyFun a6989586621679612097 (TyFun a6989586621679612097 [a6989586621679612097] -> Type) -> *) (EnumFromThenToSym1 a6989586621679612097) # 

Methods

suppressUnusedWarnings :: Proxy (EnumFromThenToSym1 a6989586621679612097) t -> () #

type Apply a6989586621679612097 (TyFun a6989586621679612097 [a6989586621679612097] -> Type) (EnumFromThenToSym1 a6989586621679612097 l0) l1 # 
type Apply a6989586621679612097 (TyFun a6989586621679612097 [a6989586621679612097] -> Type) (EnumFromThenToSym1 a6989586621679612097 l0) l1 = EnumFromThenToSym2 a6989586621679612097 l0 l1

data EnumFromThenToSym2 l l l #

Instances

SuppressUnusedWarnings (a6989586621679612097 -> a6989586621679612097 -> TyFun a6989586621679612097 [a6989586621679612097] -> *) (EnumFromThenToSym2 a6989586621679612097) # 

Methods

suppressUnusedWarnings :: Proxy (EnumFromThenToSym2 a6989586621679612097) t -> () #

type Apply a6989586621679612097 [a6989586621679612097] (EnumFromThenToSym2 a6989586621679612097 l1 l0) l2 # 
type Apply a6989586621679612097 [a6989586621679612097] (EnumFromThenToSym2 a6989586621679612097 l1 l0) l2 = EnumFromThenToSym3 a6989586621679612097 l1 l0 l2