fixed-vector-hetero-0.3.1.2: Generic heterogeneous vectors

Safe HaskellNone
LanguageHaskell98

Data.Vector.HFixed.TypeFuns

Contents

Description

Type functions

Synopsis

Type proxy

Starting from version 7.8 GHC provides kind-polymorphic proxy data type. In those versions Data.Typeable.Proxy is reexported. For GHC 7.6 we have to define our own Proxy data type.

data Proxy k t :: forall k. k -> * #

A concrete, poly-kinded proxy type

Constructors

Proxy 

Instances

Monad (Proxy *) 

Methods

(>>=) :: Proxy * a -> (a -> Proxy * b) -> Proxy * b #

(>>) :: Proxy * a -> Proxy * b -> Proxy * b #

return :: a -> Proxy * a #

fail :: String -> Proxy * a #

Functor (Proxy *) 

Methods

fmap :: (a -> b) -> Proxy * a -> Proxy * b #

(<$) :: a -> Proxy * b -> Proxy * a #

Applicative (Proxy *) 

Methods

pure :: a -> Proxy * a #

(<*>) :: Proxy * (a -> b) -> Proxy * a -> Proxy * b #

(*>) :: Proxy * a -> Proxy * b -> Proxy * b #

(<*) :: Proxy * a -> Proxy * b -> Proxy * a #

Generic1 (Proxy *) 

Associated Types

type Rep1 (Proxy * :: * -> *) :: * -> * #

Methods

from1 :: Proxy * a -> Rep1 (Proxy *) a #

to1 :: Rep1 (Proxy *) a -> Proxy * a #

Alternative (Proxy *) 

Methods

empty :: Proxy * a #

(<|>) :: Proxy * a -> Proxy * a -> Proxy * a #

some :: Proxy * a -> Proxy * [a] #

many :: Proxy * a -> Proxy * [a] #

MonadPlus (Proxy *) 

Methods

mzero :: Proxy * a #

mplus :: Proxy * a -> Proxy * a -> Proxy * a #

Vector (Proxy *) a 

Methods

construct :: Fun (Dim (Proxy *)) a (Proxy * a) #

inspect :: Proxy * a -> Fun (Dim (Proxy *)) a b -> b #

basicIndex :: Proxy * a -> Int -> a #

Bounded (Proxy k s) 

Methods

minBound :: Proxy k s #

maxBound :: Proxy k s #

Enum (Proxy k s) 

Methods

succ :: Proxy k s -> Proxy k s #

pred :: Proxy k s -> Proxy k s #

toEnum :: Int -> Proxy k s #

fromEnum :: Proxy k s -> Int #

enumFrom :: Proxy k s -> [Proxy k s] #

enumFromThen :: Proxy k s -> Proxy k s -> [Proxy k s] #

enumFromTo :: Proxy k s -> Proxy k s -> [Proxy k s] #

enumFromThenTo :: Proxy k s -> Proxy k s -> Proxy k s -> [Proxy k s] #

Eq (Proxy k s) 

Methods

(==) :: Proxy k s -> Proxy k s -> Bool #

(/=) :: Proxy k s -> Proxy k s -> Bool #

Ord (Proxy k s) 

Methods

compare :: Proxy k s -> Proxy k s -> Ordering #

(<) :: Proxy k s -> Proxy k s -> Bool #

(<=) :: Proxy k s -> Proxy k s -> Bool #

(>) :: Proxy k s -> Proxy k s -> Bool #

(>=) :: Proxy k s -> Proxy k s -> Bool #

max :: Proxy k s -> Proxy k s -> Proxy k s #

min :: Proxy k s -> Proxy k s -> Proxy k s #

Read (Proxy k s) 
Show (Proxy k s) 

Methods

showsPrec :: Int -> Proxy k s -> ShowS #

show :: Proxy k s -> String #

showList :: [Proxy k s] -> ShowS #

Ix (Proxy k s) 

Methods

range :: (Proxy k s, Proxy k s) -> [Proxy k s] #

index :: (Proxy k s, Proxy k s) -> Proxy k s -> Int #

unsafeIndex :: (Proxy k s, Proxy k s) -> Proxy k s -> Int

inRange :: (Proxy k s, Proxy k s) -> Proxy k s -> Bool #

rangeSize :: (Proxy k s, Proxy k s) -> Int #

unsafeRangeSize :: (Proxy k s, Proxy k s) -> Int

Generic (Proxy k t) 

Associated Types

type Rep (Proxy k t) :: * -> * #

Methods

from :: Proxy k t -> Rep (Proxy k t) x #

to :: Rep (Proxy k t) x -> Proxy k t #

Semigroup (Proxy k s) 

Methods

(<>) :: Proxy k s -> Proxy k s -> Proxy k s #

sconcat :: NonEmpty (Proxy k s) -> Proxy k s #

stimes :: Integral b => b -> Proxy k s -> Proxy k s #

Monoid (Proxy k s) 

Methods

mempty :: Proxy k s #

mappend :: Proxy k s -> Proxy k s -> Proxy k s #

mconcat :: [Proxy k s] -> Proxy k s #

NFData (Proxy k a)

Since: 1.4.0.0

Methods

rnf :: Proxy k a -> () #

type Rep1 (Proxy *) 
type Rep1 (Proxy *) = D1 (MetaData "Proxy" "Data.Proxy" "base" False) (C1 (MetaCons "Proxy" PrefixI False) U1)
type Dim (Proxy *) 
type Dim (Proxy *) = Z
type Rep (Proxy k t) 
type Rep (Proxy k t) = D1 (MetaData "Proxy" "Data.Proxy" "base" False) (C1 (MetaCons "Proxy" PrefixI False) U1)

proxy :: t -> Proxy t Source #

unproxy :: Proxy t -> t Source #

Type functions

type family (xs :: [α]) ++ (ys :: [α]) :: [α] Source #

Concaternation of type level lists.

Instances

type (++) α ([] α) ys Source # 
type (++) α ([] α) ys = ys
type (++) α ((:) α x xs) ys Source # 
type (++) α ((:) α x xs) ys = (:) α x ((++) α xs ys)

type family Len (xs :: [α]) :: * Source #

Length of type list expressed as type level naturals from fixed-vector.

Instances

type Len α ([] α) Source # 
type Len α ([] α) = Z
type Len α ((:) α x xs) Source # 
type Len α ((:) α x xs) = S (Len α xs)

type family Head (xs :: [α]) :: α Source #

Head of type list

Instances

type Head α ((:) α x xs) Source # 
type Head α ((:) α x xs) = x

type family HomList n (a :: α) :: [α] Source #

Homogeneous type list with length n and element of type a. It uses type level natural defined in fixed-vector.

Instances

type HomList α Z a Source # 
type HomList α Z a = [] α
type HomList α (S n) a Source # 
type HomList α (S n) a = (:) α a (HomList α n a)

type family Wrap (f :: α -> β) (a :: [α]) :: [β] Source #

Wrap every element of list into type constructor

Instances

type Wrap β α f ([] α) Source # 
type Wrap β α f ([] α) = [] β
type Wrap β α f ((:) α x xs) Source # 
type Wrap β α f ((:) α x xs) = (:) β (f x) (Wrap β α f xs)