Tembellikle ilgili bellek sızıntılarını önleyen tip sistemleri?


10

Belki de Haskell'deki ana performans sorunlarının kaynağı, bir programın yanlışlıkla sınırsız derinlikte bir yığın oluşturmasıdır - bu, değerlendirme sırasında hem bellek sızıntısına hem de potansiyel yığın taşmasına neden olur. Klasik örnek sum = foldr (+) 0Haskell'de tanımlamaktır .

Tembel bir dil kullanan bir programda bu tür gövdelerin eksikliğini statik olarak zorlayan herhangi bir tip sistemi var mı?

Bunun, örneğin sistem güvenliği veya bellek güvenliğinin bazı lezzetleri gibi tip sistem uzantılarını kullanarak diğer statik program özelliklerini kanıtlamakla aynı zorluk derecesinde olması gerektiği anlaşılmaktadır.

Yanıtlar:


4

Levy'nin itme değeri hesaplaması ile çağrılması, değerler ve onların gövdeleri arasında bir ayrım yapar. Bir değer için vÇeşidi tyhesaplama thunk vtürü vardır U ty. Lindley ve McBride'ın CBPV'den esinlenilen Frank dili, Haskell'in aksine Frank katı olsa da, hesaplamalar ve değerler arasındaki bu ayrımı açık hale getiriyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.