Loại hệ thống ngăn chặn rò rỉ bộ nhớ liên quan đến lười biếng?


10

Có lẽ nguồn chính của các vấn đề về hiệu năng trong Haskell là khi một chương trình vô tình xây dựng một khối sâu không giới hạn - điều này gây ra cả rò rỉ bộ nhớ và khả năng tràn ngăn xếp khi đánh giá. Ví dụ cổ điển được định nghĩa sum = foldr (+) 0trong Haskell.

Có bất kỳ hệ thống loại nào thực thi tĩnh thiếu các loại thun như vậy trong một chương trình sử dụng ngôn ngữ lười biếng không?

Có vẻ như điều này sẽ gặp khó khăn tương tự như việc chứng minh các thuộc tính chương trình tĩnh khác bằng cách sử dụng các phần mở rộng hệ thống loại, ví dụ như một số hương vị của an toàn luồng hoặc an toàn bộ nhớ.

Câu trả lời:


4

Cuộc gọi của Levy bằng phép tính giá trị đẩy tạo nên sự khác biệt giữa các giá trị và thunks của chúng. Đối với một giá trị vcủa kiểu tytính toán thunk vcó loại U ty. Ngôn ngữ Frank của Lindley và McBride , lấy cảm hứng từ CBPV, cũng làm cho sự khác biệt giữa tính toán và giá trị rõ ràng, mặc dù không giống như Haskell, Frank rất nghiêm khắc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.