我在 Haskell 中编写了以下线性代数向量
data Natural where
Zero :: Natural
Succ :: Natural -> Natural
data Vector n e where
Nil :: Vector Zero e
(:|) :: (Show e, Num e) => e -> Vector n e -> Vector (Succ n) e
infixr :|
instance Foldable -- ... Vector ..., but how do I implement this?
当我尝试实现Foldable
时,我遇到了具有不同定义的问题(即*和* -> *)Zero
。Succ
这个问题有明显的解决方案吗?