2
是否可以在Haskell中“将维度转换为类型”?
假设我想编写一个处理向量和矩阵的库。是否可以将维度烘焙为类型,以使不兼容的维度的操作在编译时产生错误? 例如,我希望点积的签名类似于 dotprod :: Num a, VecDim d => Vector a d -> Vector a d -> a 其中d类型包含单个整数值(代表这些Vector的维)。 我想可以通过为每个整数定义一个单独的类型并将其分组为一个名为的类型类来实现VecDim。是否有某种机制可以“生成”此类类型? 还是一些更好/更简单的方法来实现同一目标?