Các Data.Vector.Generic.Vector
typeclass nhận hai đối số loại, v
và a
nơi v :: * -> *
là loại container và a :: *
là loại các yếu tố trong container. Đây chỉ đơn giản là một giao diện chung cho các loại vectơ được xác định trong gói vector
, đặc biệt là Data.Vector.Unboxed.Vector
.
Điều này chủ yếu nói rằng loại v
phải có thể giữ (Double, Double)
và Double
, mặc dù không đồng thời. Nếu bạn đã sử dụng v ~ Data.Vector.Unboxed.Vector
thì điều này chỉ hoạt động tốt. Lý do là do việc triển khai correlation
, sử dụng unzip
. Hàm này tách một số v (a, b)
thành (v a, v b)
. Vì correlation
đang hoạt động trên v (Double, Double)
, cần có hạn chế bổ sung là v
có thể giữ Double
giây.
Loại chung này có nghĩa là làm cho chức năng correlation
hoạt động với nhiều loại hơn Data.Vector.Vector
, bao gồm bất kỳ loại kiểu vector nào có thể được triển khai trong các thư viện khác.
Tôi muốn nhấn mạnh rằng những khó khăn
Data.Vector.Generic.Vector v (Double, Double)
Data.Vector.Generic.Vector v Double
Nhà nước mà bất cứ loại bạn chọn cho v
là khả năng giữ (Double, Double)
và cũng có khả năng giữ Double
. Điều này là xác định các điều kiện tiên quyết nhất định cho loại vectơ của bạn, chứ không phải các nội dung thực tế của vectơ. Nội dung thực tế của vectơ được xác định trong đối số đầu tiên với hàm correlation
.
Tôi không chắc chắn nơi bạn có "trong ngữ cảnh từ". Ý nghĩa của nó là gần hơn với "Nếu các ràng buộc ở phía bên trái được đáp ứng, một hàm có kiểu được cho bên phải tồn tại". – Cubic