Estoy tratando de hacer algunos tipos de Haskell que están parametrizados no por tipos sino por elementos de un tipo, específicamente enteros. Por ejemplo, un vector (álgebra lineal) en R^2 y un vector en R^3 son diferentes objetos tipados. Específicamente, estoy escribiendo un árbol K-D en Haskell y quiero parametrizar mi estructura de datos por un entero positivo para que un árbol 3-D y un árbol 4-D tengan un tipo diferente.Parametrizar tipos por enteros en Haskell
He intentado parametrizar mi árbol por tuplas, pero no parecía estar yendo a ninguna parte (y parece poco probable que esto pueda ser llevado a cabo, especialmente porque no parece que triples o algo más grande sean incluso funtores (y no sé de ninguna manera decir como, ejemplo HomogeneousTuple a => Functor a) Quiero hacer algo como esto:.
data (TupleOfDoubles a) => KDTree a b = ... ---so in a 3DTree a is (Double,Double,Double)
que sería bueno, o algo como esto sería igualmente bueno
data KDTree Int a = ... -- The Int is k, so KDTree has kind Int -> * -> *
¿Alguien sabe si alguno de estos los efectos son factibles o razonables?
Gracias -Joseph
Una nota al margen, es posible que le interese parte de la literatura sobre tipos dependientes, que es un tipo más general de funciones de valores a tipos: Disfruté http://www.cse.chalmers.se/~peterd /papers/DependentTypesAtWork.pdf –
gracias Amos, eso parece algo que puedo usar –