module TestVec where open import PreludeNatType open import PreludeShow infixr 40 _::_ data Vec (A : Set) : Nat -> Set where [] : Vec A zero _::_ : {n : Nat} -> A -> Vec A n -> Vec A (suc n) head : {A : Set}{n : Nat} -> Vec A (suc n) -> A head (x :: _) = x -- no need for a [] case length : {A : Set}{n : Nat} -> Vec A n -> Nat length {A} {n} v = n three : Vec Nat 3 three = 1 :: 2 :: 3 :: [] mainS = showNat (length three)