Тип систем, що запобігають протікання пам’яті, пов’язаної з лінню?


10

Можливо, головне джерело проблем з продуктивністю в Haskell - це коли програма ненавмисно накопичує частину необмеженої глибини - це спричиняє як витік пам'яті, так і потенційний переповнення стека при оцінці. Класичний приклад - визначення sum = foldr (+) 0в Haskell.

Чи існують системи типів, які статично забезпечують відсутність таких громів у програмі, що використовує ледачу мову?

Схоже, це має бути в тому ж порядку складності, що і доведення інших статичних програмних властивостей за допомогою системних розширень, наприклад, деяких ароматів безпеки потоку або безпеки пам’яті.

Відповіді:


4

Виклик Леві за допомогою обчислювальної величини натискання розрізняє значення та їхні частки. Для значення vтипу tyобчислення thunk vмає тип U ty. Франкська мова Ліндлі та Макбрайда , натхненна CBPV, також робить це розрізнення між обчисленнями та значеннями явним, хоча, на відміну від Хаскелла, Френк суворий.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.