fixed-length-0.1.1: Lists with statically known length based on non-empty package.

Safe HaskellSafe
LanguageHaskell98

Data.FixedLength

Documentation

class list ~ List (Position list) => C list where Source #

Minimal complete definition

switch

Associated Types

type Position list :: * Source #

Methods

switch :: f T -> (forall list0. C list0 => f (T list0)) -> f list Source #

Instances

C T Source # 

Associated Types

type Position (T :: * -> *) :: * Source #

Methods

switch :: f T -> (forall list0. C list0 => f (T list0)) -> f T Source #

C list => C (T list) Source # 

Associated Types

type Position (T list :: * -> *) :: * Source #

Methods

switch :: f T -> (forall list0. C list0 => f (T list0)) -> f (T list) Source #

type family List position :: * -> * Source #

Instances

type List Zero Source # 
type List Zero = T
type List (Succ position) Source # 
type List (Succ position) = T (List position)

switch :: C list => f T -> (forall list0. C list0 => f (T list0)) -> f list Source #

newtype Wrap list a Source #

Constructors

Wrap 

Fields

Instances

C list => Functor (Wrap list) Source # 

Methods

fmap :: (a -> b) -> Wrap list a -> Wrap list b #

(<$) :: a -> Wrap list b -> Wrap list a #

C list => Applicative (Wrap list) Source # 

Methods

pure :: a -> Wrap list a #

(<*>) :: Wrap list (a -> b) -> Wrap list a -> Wrap list b #

(*>) :: Wrap list a -> Wrap list b -> Wrap list b #

(<*) :: Wrap list a -> Wrap list b -> Wrap list a #

C list => Foldable (Wrap list) Source # 

Methods

fold :: Monoid m => Wrap list m -> m #

foldMap :: Monoid m => (a -> m) -> Wrap list a -> m #

foldr :: (a -> b -> b) -> b -> Wrap list a -> b #

foldr' :: (a -> b -> b) -> b -> Wrap list a -> b #

foldl :: (b -> a -> b) -> b -> Wrap list a -> b #

foldl' :: (b -> a -> b) -> b -> Wrap list a -> b #

foldr1 :: (a -> a -> a) -> Wrap list a -> a #

foldl1 :: (a -> a -> a) -> Wrap list a -> a #

toList :: Wrap list a -> [a] #

null :: Wrap list a -> Bool #

length :: Wrap list a -> Int #

elem :: Eq a => a -> Wrap list a -> Bool #

maximum :: Ord a => Wrap list a -> a #

minimum :: Ord a => Wrap list a -> a #

sum :: Num a => Wrap list a -> a #

product :: Num a => Wrap list a -> a #

C list => Traversable (Wrap list) Source # 

Methods

traverse :: Applicative f => (a -> f b) -> Wrap list a -> f (Wrap list b) #

sequenceA :: Applicative f => Wrap list (f a) -> f (Wrap list a) #

mapM :: Monad m => (a -> m b) -> Wrap list a -> m (Wrap list b) #

sequence :: Monad m => Wrap list (m a) -> m (Wrap list a) #

newtype WrapPos list Source #

Constructors

WrapPos 

Fields

Instances

C list => Eq (WrapPos list) Source # 

Methods

(==) :: WrapPos list -> WrapPos list -> Bool #

(/=) :: WrapPos list -> WrapPos list -> Bool #

C list => Ord (WrapPos list) Source # 

Methods

compare :: WrapPos list -> WrapPos list -> Ordering #

(<) :: WrapPos list -> WrapPos list -> Bool #

(<=) :: WrapPos list -> WrapPos list -> Bool #

(>) :: WrapPos list -> WrapPos list -> Bool #

(>=) :: WrapPos list -> WrapPos list -> Bool #

max :: WrapPos list -> WrapPos list -> WrapPos list #

min :: WrapPos list -> WrapPos list -> WrapPos list #

data Zero Source #

Instances

Eq Zero Source # 

Methods

(==) :: Zero -> Zero -> Bool #

(/=) :: Zero -> Zero -> Bool #

Ord Zero Source # 

Methods

compare :: Zero -> Zero -> Ordering #

(<) :: Zero -> Zero -> Bool #

(<=) :: Zero -> Zero -> Bool #

(>) :: Zero -> Zero -> Bool #

(>=) :: Zero -> Zero -> Bool #

max :: Zero -> Zero -> Zero #

min :: Zero -> Zero -> Zero #

type List Zero Source # 
type List Zero = T

data Succ pos Source #

Constructors

Stop 
Succ pos 

Instances

Eq pos => Eq (Succ pos) Source # 

Methods

(==) :: Succ pos -> Succ pos -> Bool #

(/=) :: Succ pos -> Succ pos -> Bool #

Ord pos => Ord (Succ pos) Source # 

Methods

compare :: Succ pos -> Succ pos -> Ordering #

(<) :: Succ pos -> Succ pos -> Bool #

(<=) :: Succ pos -> Succ pos -> Bool #

(>) :: Succ pos -> Succ pos -> Bool #

(>=) :: Succ pos -> Succ pos -> Bool #

max :: Succ pos -> Succ pos -> Succ pos #

min :: Succ pos -> Succ pos -> Succ pos #

Show pos => Show (Succ pos) Source # 

Methods

showsPrec :: Int -> Succ pos -> ShowS #

show :: Succ pos -> String #

showList :: [Succ pos] -> ShowS #

type List (Succ position) Source # 
type List (Succ position) = T (List position)

toList :: C list => list a -> [a] Source #

equal :: (C list, Eq a) => list a -> list a -> Bool Source #

showsPrec :: (C list, Show a) => Int -> list a -> ShowS Source #

map :: C list => (a -> b) -> list a -> list b Source #

zipWith :: C list => (a -> b -> c) -> list a -> list b -> list c Source #

sequenceA :: (Applicative f, C list) => list (f a) -> f (list a) Source #

repeat :: C list => a -> list a Source #

index :: C list => WrapPos list -> list a -> a Source #

update :: C list => (a -> a) -> WrapPos list -> list a -> list a Source #

indices :: C list => list (WrapPos list) Source #

indicesInt :: C list => list Int Source #

numFromPos :: C list => WrapPos list -> Word Source #

type N0 = T Source #

type N1 = GE1 T Source #

type N2 = GE2 T Source #

type N3 = GE3 T Source #

type N4 = GE4 T Source #

type N5 = GE5 T Source #

type N6 = GE6 T Source #

type N7 = GE7 T Source #

type N8 = GE8 T Source #

type GE1 list = T list Source #

type GE2 list = T (GE1 list) Source #

type GE3 list = T (GE2 list) Source #

type GE4 list = T (GE3 list) Source #

type GE5 list = T (GE4 list) Source #

type GE6 list = T (GE5 list) Source #

type GE7 list = T (GE6 list) Source #

type GE8 list = T (GE7 list) Source #

i0 :: WrapPos (GE1 list) Source #

i1 :: WrapPos (GE2 list) Source #

i2 :: WrapPos (GE3 list) Source #

i3 :: WrapPos (GE4 list) Source #

i4 :: WrapPos (GE5 list) Source #

i5 :: WrapPos (GE6 list) Source #

i6 :: WrapPos (GE7 list) Source #

i7 :: WrapPos (GE8 list) Source #

(!:) :: a -> f a -> T f a infixr 5 #

end :: T a Source #