Re[3]: Про ATS и зависимые типы
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 08.01.12 19:59
Оценка:
DG>>сорт и kind — это одно и тоже?

DM>Нет, довольно таки разные вещи.


в чем отличие?


DM> А в ряде других случаев мы упираемся в то, что статические значения используются только в компайл-тайме, в рантайме их просто нет.


согласен, по умолчанию они на runtime не переносятся, но их туда можно перенести тем или иным способом.

DM> Банальный пример — тип list(int, 10) (т.е. список из 10 интов) в рантайме представлен классическим односвязным списком, длина нигде не хранится. Просто при компиляции компилятор проверит все равенства и неравенства, упоминающие длину этого списка, на непротиворечивость и, если все ок, выдаст корректный код, в котором не будет например обращений к 11-му элементу данного списка. Но чтобы получить в рантайме длину этого списка как рантайм-значение, его надо честно вычислить, обойдя список.


если при компиляции было указано число 10, то ничего считать не надо, надо лишь подставить в нужное место это число (там где нужна распаковка).
при этом возникает лишь задача протащить через код это число от места введения до места использования.

зы
посчитать один раз придется, если использует сорт вида "список константной длины n", тогда и на уровне компиляции неизвестна длина списка, а известно лишь что список не меняет своей длины при преобразованиях.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.