{-# OPTIONS --safe #-}
module Data.Vec.Sigma where
open import Prelude
open import Data.Unit.UniversePolymorphic renaming (⊤ to ⊤′)
Vec⁺ : Type a → ℕ → Type a
Vec⁺ A zero = A
Vec⁺ A (suc n) = A × Vec⁺ A n
Vec : Type a → ℕ → Type a
Vec A 0 = ⊤′
Vec A (suc n) = Vec⁺ A n
private variable n : ℕ
open import Data.List using (List; _∷_; [])
toList⁺ : Vec⁺ A n → List A
toList⁺ {n = zero } x = x ∷ []
toList⁺ {n = suc n} (x , xs) = x ∷ toList⁺ xs
toList : Vec A n → List A
toList {n = zero } _ = []
toList {n = suc n} = toList⁺