copilot-core-3.2: An intermediate representation for Copilot.
Safe HaskellSafe
LanguageHaskell2010

Copilot.Core.Type.Array

Description

Implementation of an array that uses type literals to store length. No explicit indexing is used for the input data. Supports arbitrary nesting of arrays.

Documentation

data Array (n :: Nat) t Source #

Instances

Instances details
Foldable (Array n) Source # 
Instance details

Defined in Copilot.Core.Type.Array

Methods

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

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

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

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

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

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

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

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

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

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

null :: Array n a -> Bool #

length :: Array n a -> Int #

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

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

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

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

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

Show t => Show (Array n t) Source # 
Instance details

Defined in Copilot.Core.Type.Array

Methods

showsPrec :: Int -> Array n t -> ShowS #

show :: Array n t -> String #

showList :: [Array n t] -> ShowS #

(Typeable t, Typed t, KnownNat n, Flatten t (InnerType t), Typed (InnerType t)) => Typed (Array n t) Source # 
Instance details

Defined in Copilot.Core.Type

Flatten a b => Flatten (Array n a) b Source # 
Instance details

Defined in Copilot.Core.Type.Array

Methods

flatten :: forall (n0 :: Nat). Array n0 (Array n a) -> [b] Source #

array :: forall n t. KnownNat n => [t] -> Array n t Source #

flatten :: Flatten a b => Array n a -> [b] Source #

size :: forall a n b. (Flatten a b, b ~ InnerType a) => Array n a -> Int Source #

class Flatten a b Source #

Minimal complete definition

flatten

Instances

Instances details
Flatten a a Source # 
Instance details

Defined in Copilot.Core.Type.Array

Methods

flatten :: forall (n :: Nat). Array n a -> [a] Source #

Flatten a b => Flatten (Array n a) b Source # 
Instance details

Defined in Copilot.Core.Type.Array

Methods

flatten :: forall (n0 :: Nat). Array n0 (Array n a) -> [b] Source #

type family InnerType x where ... Source #

Equations

InnerType (Array _ x) = InnerType x 
InnerType x = x 

arrayelems :: Array n a -> [a] Source #