- size :: Nat n => Value (Array n a) -> Int
- assemble :: (Nat n, IsFirstClass a, IsSized a s) => [Value a] -> CodeGenFunction r (Value (Array n a))
- extractAll :: (Nat n, IsFirstClass a, IsSized a s) => Value (Array n a) -> CodeGenFunction r [Value a]
- map :: (Nat n, IsFirstClass a, IsSized a asize, IsFirstClass b, IsSized b bsize) => (Value a -> CodeGenFunction r (Value b)) -> Value (Array n a) -> CodeGenFunction r (Value (Array n b))
Documentation
assemble :: (Nat n, IsFirstClass a, IsSized a s) => [Value a] -> CodeGenFunction r (Value (Array n a))Source
construct an array out of single elements
You must assert that the length of the list matches the array size.
This can be considered the inverse of extractAll
.
extractAll :: (Nat n, IsFirstClass a, IsSized a s) => Value (Array n a) -> CodeGenFunction r [Value a]Source
provide the elements of an array as a list of individual virtual registers
This can be considered the inverse of assemble
.
map :: (Nat n, IsFirstClass a, IsSized a asize, IsFirstClass b, IsSized b bsize) => (Value a -> CodeGenFunction r (Value b)) -> Value (Array n a) -> CodeGenFunction r (Value (Array n b))Source
The loop is unrolled,
since insertvalue
and extractvalue
expect constant indices.