16 lines
521 B
Text
16 lines
521 B
Text
inductive Vec (α : Type u) : Nat → Type u
|
||
| nil : Vec α 0
|
||
| cons : α → Vec α n → Vec α (n+1)
|
||
|
||
def Vec.map (xs : Vec α n) (f : α → β) : Vec β n :=
|
||
match xs with
|
||
| nil => nil
|
||
| cons a as => cons (f a) (map as f)
|
||
|
||
def Vec.map' (f : α → β) : Vec α n → Vec β n
|
||
| nil => nil
|
||
| cons a as => cons (f a) (map' f as)
|
||
|
||
def Vec.map2 (f : α → α → β) : Vec α n → Vec α n → Vec β n
|
||
| nil, nil => nil
|
||
| cons a as, cons b bs => cons (f a b) (map2 f as bs)
|