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

Safe HaskellSafe
LanguageHaskell98

Data.FixedLength

Documentation

data T n a #

Instances

Natural n => Functor (T n) # 

Methods

fmap :: (a -> b) -> T n a -> T n b #

(<$) :: a -> T n b -> T n a #

Natural n => Applicative (T n) # 

Methods

pure :: a -> T n a #

(<*>) :: T n (a -> b) -> T n a -> T n b #

liftA2 :: (a -> b -> c) -> T n a -> T n b -> T n c #

(*>) :: T n a -> T n b -> T n b #

(<*) :: T n a -> T n b -> T n a #

Natural n => Foldable (T n) # 

Methods

fold :: Monoid m => T n m -> m #

foldMap :: Monoid m => (a -> m) -> T n a -> m #

foldr :: (a -> b -> b) -> b -> T n a -> b #

foldr' :: (a -> b -> b) -> b -> T n a -> b #

foldl :: (b -> a -> b) -> b -> T n a -> b #

foldl' :: (b -> a -> b) -> b -> T n a -> b #

foldr1 :: (a -> a -> a) -> T n a -> a #

foldl1 :: (a -> a -> a) -> T n a -> a #

toList :: T n a -> [a] #

null :: T n a -> Bool #

length :: T n a -> Int #

elem :: Eq a => a -> T n a -> Bool #

maximum :: Ord a => T n a -> a #

minimum :: Ord a => T n a -> a #

sum :: Num a => T n a -> a #

product :: Num a => T n a -> a #

Natural n => Traversable (T n) # 

Methods

traverse :: Applicative f => (a -> f b) -> T n a -> f (T n b) #

sequenceA :: Applicative f => T n (f a) -> f (T n a) #

mapM :: Monad m => (a -> m b) -> T n a -> m (T n b) #

sequence :: Monad m => T n (m a) -> m (T n a) #

(Natural n, Eq a) => Eq (T n a) # 

Methods

(==) :: T n a -> T n a -> Bool #

(/=) :: T n a -> T n a -> Bool #

(Natural n, Show a) => Show (T n a) # 

Methods

showsPrec :: Int -> T n a -> ShowS #

show :: T n a -> String #

showList :: [T n a] -> ShowS #

type family Position n :: * #

Instances

type Position Zero # 
type Position (Succ n) # 
type Position (Succ n) = Succ (Position n)

type family List n :: * -> * #

Instances

type List Zero # 
type List Zero = T
type List (Succ n) # 
type List (Succ n) = T (List n)

type family Length (f :: * -> *) #

Instances

type Length T # 
type Length T = Zero
type Length (T f) # 
type Length (T f) = Succ (Length f)

data Index n #

Instances

Natural n => Eq (Index n) # 

Methods

(==) :: Index n -> Index n -> Bool #

(/=) :: Index n -> Index n -> Bool #

Natural n => Ord (Index n) # 

Methods

compare :: Index n -> Index n -> Ordering #

(<) :: Index n -> Index n -> Bool #

(<=) :: Index n -> Index n -> Bool #

(>) :: Index n -> Index n -> Bool #

(>=) :: Index n -> Index n -> Bool #

max :: Index n -> Index n -> Index n #

min :: Index n -> Index n -> Index n #

data Zero #

Instances

Eq Zero # 

Methods

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

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

Ord Zero # 

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 #

data Succ pos #

Constructors

Stop 
Succ pos 

Instances

Eq pos => Eq (Succ pos) # 

Methods

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

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

Ord pos => Ord (Succ pos) # 

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) # 

Methods

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

show :: Succ pos -> String #

showList :: [Succ pos] -> ShowS #

toList :: Natural n => T n a -> [a] #

showsPrec :: (Natural n, Show a) => Int -> T n a -> ShowS #

map :: Natural n => (a -> b) -> T n a -> T n b #

zipWith :: Natural n => (a -> b -> c) -> T n a -> T n b -> T n c #

sequenceA :: (Applicative f, Natural n) => T n (f a) -> f (T n a) #

repeat :: Natural n => a -> T n a #

index :: Natural n => Index n -> T n a -> a #

update :: Natural n => (a -> a) -> Index n -> T n a -> T n a #

indices :: Natural n => T n (Index n) #

type GE1 n = Succ n #

type GE2 n = Succ (GE1 n) #

type GE3 n = Succ (GE2 n) #

type GE4 n = Succ (GE3 n) #

type GE5 n = Succ (GE4 n) #

type GE6 n = Succ (GE5 n) #

type GE7 n = Succ (GE6 n) #

type GE8 n = Succ (GE7 n) #

i0 :: Index (GE1 n) #

i1 :: Index (GE2 n) #

i2 :: Index (GE3 n) #

i3 :: Index (GE4 n) #

i4 :: Index (GE5 n) #

i5 :: Index (GE6 n) #

i6 :: Index (GE7 n) #

i7 :: Index (GE8 n) #

fromFixedList :: List n a -> T n a #

toFixedList :: T n a -> List n a #

(!:) :: a -> T n a -> T (Succ n) a infixr 5 #

end :: T Zero a #

singleton :: a -> T U1 a #

viewL :: T (Succ n) a -> (a, T n a) #

switchL :: (a -> T n a -> b) -> T (Succ n) a -> b #

head :: Positive n => T n a -> a #

tail :: T (Succ n) a -> T n a #

switchEnd :: b -> T Zero a -> b #

type family Curried n a b #

Instances

type Curried Zero a b # 
type Curried Zero a b = b
type Curried (Succ n) a b # 
type Curried (Succ n) a b = a -> Curried n a b

uncurry :: Natural n => Curried n a b -> T n a -> b #

minimum :: (Positive n, Ord a) => T n a -> a #

maximum :: (Positive n, Ord a) => T n a -> a #