Мне говорят, что в системе зависимого типа "типы" и "значения" смешиваются, и мы можем рассматривать их как "термины".
Но есть кое-что, что я не могу понять: на строго типизированном языке программирования без Dependent Type (например, Haskell) типы определяются (выводятся или проверяются) во время компиляции, но значения определяются (вычисляются или вводятся) во время выполнения.
Я думаю, что между этими двумя этапами должен быть разрыв. Просто подумайте, что если значение интерактивно считывается из STDIN, как мы можем ссылаться на это значение в типе, который нужно решить AOT?
например, существует натуральное число n
и список натурального числа xs
(который содержит n элементов), который мне нужно прочитать из STDIN, как я могу поместить их в структуру данных Vect n Nat
?