Với hai chức năng:sự mặc định Generic trong Haskell
f :: (A a, B b) => a -> b
g :: (B b, C c) => b -> c
Có cách nào (trong GHC) tôi có thể làm cho nó có thể viết:
h x = g (f x)
Mà không cần phải thêm một chữ ký kiểu cho f x
, ví dụ
h x = g ((f x) :: T)
Bởi có một số "kiểu mặc định" rằng f x
mất nếu không chỉ định?
Tôi nghi ngờ tôi cần một cái gì đó như Defaulting in Haskell Prime nhưng điều này đã được thực hiện trong GHC (hoặc trong GHC đầu)?
Theo như tôi biết, đề xuất được liên kết không được triển khai cũng như không được lên kế hoạch cho GHC; và tôi không thể nghĩ ra bất kỳ thủ thuật nào khác sẽ cho phép bạn hoàn toàn tránh thêm chú thích kiểu. [Ứng dụng loại rõ ràng] (https://ghc.haskell.org/trac/ghc/wiki/ExplicitTypeApplication), mà tôi hiểu được lên kế hoạch (nhưng không được bảo vệ) có thể giúp bạn có được cú pháp trọng lượng nhẹ hơn. Nhưng tôi không chắc chắn "Tôi không thể nghĩ ra bất cứ điều gì" thực sự đủ tiêu chuẩn như một câu trả lời ... –