Типы параметризации целых чисел в Haskell

Я пытаюсь сделать некоторые типы Haskell, которые параметризованы не типы, а элементами типа, в частности, целые числа. Например, Vector (линейная алгебра) в R ^ 2 и вектор в R ^ 3 - разные типизированные объекты. В частности, я пишу дерево K-D в Haskell, и я хочу параметризовать мою структуру данных путем положительного целого числа, поэтому 3-D дерево и 4-D дерево имеют разный тип.

Я пытался параметризировать свое дерево кортежами, но, похоже, нигде не шел (и кажется, что несколько маловероятно, что это можно протолкнуть, тем более, так как это не кажется, что тройки или все больше Функторы (и я не знаю никакого способа сказать, как, экземпляр гомогенен a => функтор 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 -> * -> *

Кто-нибудь знает, если эти эффекты являются работоспособными или разумными?

Спасибо -JOSEPH

7
задан Joseph Victor 1 September 2011 в 07:07
поделиться