Tôi đang đọc mã nguồn của Data.Map và tôi thấy rằng!() Được sử dụng trong hàm tạo dữ liệu của data Map k a
.() nghĩa là gì trong trình tạo dữ liệu?
data Map k a = Tip
| Bin {-# UNPACK #-} !Size !k a !(Map k a) !(Map k a)
Tôi thấy rằng số !()
không ảnh hưởng đến cách vỗ phù hợp với dữ liệu. Trong chức năng của mapWithKey, kết hợp patten vẫn còn cho 5 thứ. Vì vậy, tôi không coi nó như là một nhà điều hành.
mapWithKey f (Bin sx kx x l r)
Sau khi googleing, tôi thấy rằng !()
có thể liên quan đến -XBangPatterns
được sử dụng để đánh giá lười biếng. Tôi có đúng không? Hay là vì mục đích khác?
Cảm ơn câu trả lời của bạn. Oh, vậy tôi hoàn toàn sai? Nó không phải là để đánh giá lười biếng, nhưng để đánh giá các giá trị của các đối số. Nhưng tôi không chắc chắn lý do tại sao các gói lực lượng nghiêm ngặt trên bản đồ. Nếu không có sự khắt khe, chúng ta vẫn có thể thực hiện tìm kiếm, lập bản đồ khi chúng ta đang đi mặc dù cây của bản đồ là – code4j
'Data.Map' là cột sống nghiêm ngặt cho hiệu quả. Thực sự, hiệu quả là lý do chính khiến mọi người thường quan tâm đến việc thêm độ nghiêm ngặt. – shachaf
Cảm ơn bạn đã giải thích :) – code4j