Vec.agda 444 B

12345678910111213141516171819202122
  1. module Vec where
  2. data Nat : Set where
  3. zero : Nat
  4. suc : Nat -> Nat
  5. data Vec (A : Set) : Nat -> Set where
  6. ε : Vec A zero
  7. _►_ : {n : Nat} -> A -> Vec A n -> Vec A (suc n)
  8. vec : {A : Set}{n : Nat} -> A -> Vec A n
  9. vec {n = zero} x = ε
  10. vec {n = suc n} x = x ► vec x
  11. _<*>_ : {A B : Set}{n : Nat} -> Vec (A -> B) n -> Vec A n -> Vec B n
  12. ε <*> ε = ε
  13. (f ► fs) <*> (x ► xs) = f x ► (fs <*> xs)
  14. -- map
  15. -- zip