mirror of
https://github.com/idris-lang/Idris2.git
synced 2024-12-24 12:14:26 +03:00
20 lines
515 B
Idris
20 lines
515 B
Idris
import Data.Vect
|
|
|
|
%unbound_implicits off
|
|
|
|
append : forall n, m, a . Vect n a -> Vect m a -> Vect (n + m) a
|
|
append [] ys = ys
|
|
append (x :: xs) ys = x :: append xs ys
|
|
|
|
data Env : forall n . Vect n Type -> Type where
|
|
ENil : Env []
|
|
ECons : forall t, ts . t -> Env ts -> Env (t :: ts)
|
|
|
|
-- fine because the only name used in bound, and it'll infer types for
|
|
-- xs and its indices
|
|
len : forall xs . Env xs -> Nat
|
|
|
|
-- neither of these are fine
|
|
len': Env xs -> Nat
|
|
append' : Vect n a -> Vect m a -> Vect (n + m) a
|