Я знаю, что у Haskell уже есть возможность параметризовать тип поверх другого типа (аналогично шаблонному программированию в C ++), но мне интересно, может ли Haskell также параметризировать тип над значениями - поддерживает ли он зависимые типы. С зависимыми типами вы можете иметь тип, параметризованный над целыми числами, например, векторы размера n, матрицы размера n × m и т. Д.
Если нет, то почему нет? И есть ли вероятность, что это будет поддерживаться в будущем?
Чтобы немного подробнее рассказать о том, что Пламя Птариена хорошо объяснило о текущем статусе, и GHC Haskell, похоже, движется дальше в направлении зависимых типов (сохраняя разделение фаз) с каждой версией.
Так, например, на ICFP 2013 в сентябре этого года должен быть представлен документ о следующей фазе этого процесса «На пути к типу Haskell с зависимой типизацией: система FC с добрым равенством» о свертывании уровней типа и типа. Как было объявлено, план будет около 3 лет назад .
И даже упоминается следующий шаг: «Нам также известно, что в предстоящей диссертации Адама Гандри будут включены Π-типы в версии System FC, и мы захотим сделать эту функцию доступной и на исходном языке. (Личное общение)»
источник
Haskell традиционно пытался его подделать, но в результате получается гораздо более крупная и, казалось бы, повторяющаяся система типов. Но это может скоро измениться! Видеть:
источник