Seems common in dependent printing programming to determine
data Vec :: Type -> Nat -> Type where
Nil :: Vec a 'Z
Cons :: a -> Vec a n -> Vec a ( n)
In the Haskell, however, classes Functor, Applicative, Foldable, Traversable, Eq1, Ord1, etc., it seems to make a good example for the coup arguments around Vec :: Nat -> Type -> Type.
Is there any important reason for a conventional agreement? Or is it just what people use in languages not based on class classes?
source
share