Thư viện nào tồn tại để triển khai cấu trúc dữ liệu chặt chẽ? Cụ thể, tôi đang tìm kiếm các danh sách nghiêm ngặt và các bộ nghiêm ngặt.Thư viện cho cấu trúc dữ liệu chặt chẽ trong Haskell
Phủ nhận:
tôi biết deepseq. Nó rất hữu ích, nhưng nó cho biết thêm chi phí vượt qua toàn bộ cấu trúc dữ liệu mỗi khi bạn sử dụng deepseq (có thể nhiều hơn một lần).
Tôi biết rằng một cấu trúc dữ liệu chứa giống như nghiêm ngặt không đảm bảo tất cả mọi thứ nó chứa sẽ được đánh giá đầy đủ, nhưng cấu trúc bản thân nên nghiêm ngặt, ví dụ:
data StrictList a = !a :$ !(StrictList a) | Empty
(Ở đây, các phần tử có trong WHNF và có thể không được đánh giá đầy đủ, nhưng cấu trúc của danh sách là. Ví dụ: danh sách vô hạn sẽ không có giá trị chấm dứt.)
Tôi biết về gói 'nghiêm ngặt' về tấn công, nhưng nó có một giới hạn rất d tập hợp các cấu trúc dữ liệu chặt chẽ. Nó không chứa các danh sách và bộ không nghiêm ngặt .
Viết danh sách nghiêm ngặt bản thân mình dường như amazingly dễ dàng (Tôi yêu mở rộng GHC của để lấy functor, traversable và có thể gập lại, btw.), Nhưng nó vẫn có vẻ như nó sẽ là thực hiện tốt hơn trong một thư viện riêng. Và triển khai hiệu quả các bộ dường như không tầm thường đối với tôi.
Tại sao bạn cần cấu trúc chặt chẽ? – fuz
@FUZxxl đảm bảo rằng mọi thứ được đánh giá không chậm trễ thường có thể giảm mức sử dụng không gian và làm cho việc tính toán nhanh hơn nhiều. Nó cũng có thể có hiệu ứng ngược lại, vì vậy cấu trúc lười biếng cũng rất quan trọng. Đối với mã hiệu quả, bạn cần cả hai (và phải biết/tìm ra để sử dụng ở đâu). –
@FUZxxl: Tôi đang thực hiện những việc giống như một tiểu bang giống như trên một Bộ nơi tôi sẽ chèn và xóa các phần tử từ tập hợp rất thường xuyên nhưng không đánh giá Set trong một thời gian. Điều này dẫn đến rò rỉ không gian, có thể được cố định bởi cấu trúc dữ liệu cột sống (nhờ, John L). – shahn