2012-04-13 18 views

Trả lời

16

Yêu cầu typeclass giống như truyền một đối số thừa cho hàm chứa các thành viên của lớp loại như cấu trúc dữ liệu, vì đằng sau hậu trường là những gì nó được đưa vào trong GHC.

Điều đó nói rằng, GHC khá giỏi trong nội tuyến và chuyên mã sử dụng typeclasses đến điểm không phải vấn đề, với -O2 một tỷ lệ rất lớn chỉ biến mất, nhưng thậm chí không có loại tối ưu đối số là khá rẻ.

Vì vậy, chi phí nhiều hơn loại ma hoặc kiểu mới nhưng không quá cao.

Ngoài ra, chi phí trong các trình biên dịch khác có thể thay đổi. ví dụ. JHC thực hiện phân tích trường hợp một cách hiệu quả trên các nhà xây dựng kiểu bằng cách sử dụng một dạng phụ thuộc hạn chế, do đó bạn trả tiền cho số biến kiểu bị ràng buộc, không phải số lượng các ràng buộc khi làm việc trong JHC.

+16

Việc vượt qua đối số bổ sung là giá rẻ. Việc gọi hàm chưa biết trong bản ghi đã vượt qua đó rất tốn kém. Vì vậy, loại lớp học là khá tốn kém, trừ khi trình biên dịch quản lý để chuyên chúng đi. – augustss

+1

Tôi luôn đánh giá cao kiểu trả lời của Augustss. Cung cấp các câu trả lời có chất lượng cao và ngắn gọn đến nỗi nhiều người hỏi không hiểu giá trị đầy đủ của họ (kể từ năm 2011). Đôi khi tôi cảm thấy chúng ta nên làm một bot luôn luôn nhận xét về câu trả lời của mình/ý kiến ​​nói rằng "Wow, đó là tốt để biết!". –

+2

Đúng, tôi cho rằng tôi nên thêm vào báo trước gọi một chức năng từ từ điển bạn đã chuyển yêu cầu ít nhất một, thường là 2 bước gián tiếp, có nghĩa là các quầy hàng đường ống, v.v. –

Các vấn đề liên quan