The type of dropElems is:
dropElems
: forall {a : Type, m n : Nat}
. N m -> (Vec n a) [0..1] -> Vec (n - m) a
Changing the type to
dropElems
: forall {a : Type, m n : Nat}
. N m -> Vec n (a [0..1]) -> Vec (n - m) a
would require a bit more code in the implementation, but it seems to me like that type should be clearer and provide better synthesis and free theorems?
The type of
dropElemsis:Changing the type to
would require a bit more code in the implementation, but it seems to me like that type should be clearer and provide better synthesis and free theorems?