Статическая проверка невылезания за границы массива и т.д.
От: Rtveliashvili Denys Великобритания  
Дата: 25.12.09 22:37
Оценка:
Доброго времени суток!

Я обнаружил на LtU презентацию "The Next Mainstream Programming Languages" (http://www.cs.princeton.edu/~dpw/popl/06/Tim-POPL.ppt).

Среди прочего, там есть идея (думаю, дико бородатая), что можно вводить дополнительные ограничения на данные, что гарантируют попадание всех индексов в массив (как частный случай):

Transform{n:nat}(Vertices:[n]Vertex, Indices:[]nat<n, m:Matrix):[]Vertex=
    for each(i in Indices)
       Transform(m,Vertices[i])


Вроде разумно и хорошо. Но абсолютно непонятно, как это может работать.
В простейшем случае, когда массивы и их значения извесны на этапе компиляции — все более-менее шоколадно. Но что если все это дело загружается, скажем, из внешнего мира и изначально не ясно, выполняются ли эти условия? Видимо тогда надо вручную делать некий if-then-else, что в одной из веток выполнения гарантирует какие-то ограничения. Плюс, должна быть какая-то система доказательств и, желательно, автоматическая система вывода ограничений.

Известно ли уважаемой публике
* что это будет за система типов?
* есть ли готовые примеры реализации?
* что можно почитать на этот счет?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.