Dường như cho đến những năm gần đây, theo cách thông thường để vượt qua một loại thêm một chức năng là để làm một cái gì đó giống nhưAi đã phát minh ra proxy và khi nào?
f (undefined :: T)
Kiselyov và Shan thậm chí sử dụng phương pháp này trong tác phẩm cổ điển của họ trên phản ánh đẳng cấp dựa trên cảm hứng gói reflection
. Họ tha thứ cho sự xấu xí rõ ràng bằng cách lưu ý rằng giá trị không có thật là không bao giờ được kiểm tra. Và một hóa thân chỉ hơi xấu xí xuất hiện trong Data.Bits.finiteBitSize
, có một giá trị nó bỏ qua để có được loại của nó.
Sau đó, ai đó đã tìm ra thành ngữ proxy và mọi thứ đã thay đổi. Bây giờ, chúng tôi luôn thấy sự hài lòng hơn nữa
f (Proxy :: Proxy T)
(trong mã chuẩn — Ứng dụng loại GHC là một câu chuyện khác).
Ai đã tìm ra? Điều này đầu tiên xuất hiện trong mã một nơi nào đó, hoặc một bài báo?
Lần đầu tiên tôi thấy Proxy trong gói [tagged] (http://hackage.haskell.org/package/tagged-0.1.0/docs/Data-Tagged.html) của Edward, fwiw. Nó không phải là 0,0 nhưng chỉ bằng 0,1. –
Câu hỏi thú vị.Trên các tin tức khác, tôi chỉ thấy nhận xét về thẻ _history_ "KHÔNG sử dụng thẻ này cho các câu hỏi về lịch sử của một khái niệm hoặc tính năng lập trình; những câu hỏi đó không có chủ đề". Đôi khi các chính sách SO rất đáng ngạc nhiên. (Và có, bình luận này cũng là một chút OT ở đây). – chi