Опитвам се да направя някои типове на Haskell, които са параметризирани не от типове, а от елементи от тип, по-специално цели числа. Например (линейно-алгебра) вектор в R^2 и вектор в R^3 са различни типизирани обекти. По-конкретно, пиша K-D дърво в Haskell и искам да параметризирам моята структура от данни чрез положително цяло число, така че 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 -> * -> *
Някой знае ли дали някой от тези ефекти е работещ или разумен?
Благодаря - Джоузеф