2012-10-10 22 views
13

Tôi đang sử dụng thư viện Haskell cho OAuth và tác giả không lấy được Hiển thị cho loại tôi đang sử dụng và muốn có thể in ra để gỡ lỗi. Tôi muốn xuất hiện cho nó. Có cách nào để làm điều này từ bên ngoài thư viện, ngoài việc xây dựng một chức năng sao chép tất cả các lĩnh vực hồ sơ vào một loại bản ghi mà không lấy được Hiển thị?Làm thế nào để bạn lấy được Hiển thị cho loại được xác định trong thư viện của người khác?

Loại trong câu hỏi là Mã từ Network.OAuth.Consumer:

http://hackage.haskell.org/packages/archive/hoauth/0.3.5/doc/html/src/Network-OAuth-Consumer.html#Token

Trả lời

19

Bạn có thể dùng một phần mở rộng GHC gọi StandaloneDeriving.

Với phần mở rộng này, bạn có thể viết các biểu thức như:

deriving instance Show Token 

Để sử dụng, đặt

{-# LANGUAGE StandaloneDeriving #-} 

ở phía trên cùng của tập tin của bạn.

Cú pháp cho một dẫn xuất độc lập về cơ bản giống hệt cú pháp cho câu lệnh instance, ngoại trừ trước là deriving và không có mệnh đề where. Điều này có nghĩa là bạn có thể viết ví dụ cụ thể hơn như:

deriving instance Show a => Foo (Maybe a) 

Bạn cũng phải cung cấp rõ ràng ngữ cảnh cần thiết cho ví dụ của mình. Bạn sẽ phải viết một cá thể độc lập như thế này:

deriving instance Show a => Show (Foo a) 

Tức là, bạn cần phải lưu ý rõ ràng ngữ cảnh Show a cần thiết.

Điều này sẽ không xuất hiện trong trường hợp của bạn, nhưng đó là điều cần lưu ý.

+0

Cảm ơn bạn đó là những gì tôi cần. – dan

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