2014-07-10 18 views
6

Vì vậy, tôi đã sử dụng thư viện aeson, và nghĩ rằng nó sẽ rất hữu ích để có các chức năng sau:Loại chữ ký cần có một kiểu đó không được xuất khẩu bởi các thư viện

v .:! f = liftM (fromMaybe mempty) (v .:? f) 

Khi tôi hỏi GHCi cho loại, tôi nhận được:

(.:!) 
    :: (Monoid r, FromJSON r) => 
    Object 
    -> T.Text -> aeson-0.7.0.6:Data.Aeson.Types.Internal.Parser r 

Tuy nhiên, chính Parser không thực sự được xuất bởi Data.Aeson hoặc Data.Aeson.Types. Tôi buộc phải không có chữ ký kiểu cho hàm tôi đã xác định?

Ngoài ra, nếu có ai biết cách tốt hơn để hoàn thành những gì tôi đang cố gắng làm, tôi sẽ quan tâm đến đề xuất của bạn.

+3

[Trình phân tích cú pháp] (http://hackage.haskell.org/package/aeson-0.7.0.6/docs/Data-Aeson-Types.html#t:Parser) được xuất từ ​​'Data.Aeson.Types' – bennofs

+0

Oh ... Vâng. Bạn đúng rồi. Tôi nghĩ rằng tôi đã thử nó trước đó và nó không hoạt động. Phải làm điều gì sai. – Emil

+1

Nhưng tôi đoán câu hỏi vẫn đứng vững? Bạn sẽ làm gì nếu nó không? – Emil

Trả lời

3

Hiện tại, hoàn toàn có thể trong Haskell để viết mã có loại suy đoán mà bạn không thể tự viết vì biểu tượng chưa được xuất bản. Đã có discussion about this trên danh sách gửi thư của thư viện Haskell vào tháng 4 năm 2014 mà không có kết luận chắc chắn nào nhưng ý thức chung là giữ cho hành vi hiện tại.

Tuy nhiên, quy tắc chung là nếu cần mở rộng ngôn ngữ để viết chữ ký loại sẽ được suy ra, thì bạn cần bật tiện ích đó ngay cả khi bạn không bao gồm chữ ký một cách rõ ràng.

+0

Đây có phải là vì nó (loại) có ý nghĩa khi xuất một từ đồng nghĩa loại mà không xuất loại cơ bản? – dfeuer

+0

Vâng, tôi nghĩ đó là lý lẽ chống lại. Cá nhân tôi nghĩ rằng nó sẽ là tốt hơn để được hoàn thành. –

+0

Tôi tin rằng hoặc là khó hoặc không thể tìm ra liệu một loại có thể được thể hiện dưới dạng các từ đồng nghĩa rõ ràng hay không. Cho dù nó thực sự * không * có ý nghĩa để xuất một từ đồng nghĩa loại trong khi ẩn kiểu cơ bản là một câu hỏi hoàn toàn khác; nếu vậy, gói 'pipes' có thể là một nơi tốt để tìm kiếm một thứ như vậy. – dfeuer

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