我正在尝试制作一些 Haskell 类型,这些类型不是按类型而是按类型的元素(特别是整数)进行参数化。例如,R^2 中的(线性代数)向量和 R^3 中的向量是不同类型的对象。具体来说,我正在用 Haskell 编写一个 KD 树,我想用一个正整数参数化我的数据结构,因此 3-D 树和 4-D 树具有不同的类型。
我试图通过元组参数化我的树,但它似乎没有去任何地方(而且这似乎不太可能被推动,特别是因为看起来三元组或更大的东西甚至不是函子(和我不知道如何说,例如 HomogeneousTuple a => Functor a)。我想做这样的事情:
data (TupleOfDoubles a) => KDTree a b = ... ---so in a 3DTree a is (Double,Double,Double)
那会很好,或者类似的东西同样好
data KDTree Int a = ... -- The Int is k, so KDTree has kind Int -> * -> *
有人知道这些效果中的任何一个是否可行或合理吗?
谢谢-约瑟夫