Tôi đang cố gắng sử dụng thư viện tuyến tính của ekmett và tôi đang gặp một số sự cố với vectơ độ dài thay đổi, trong Linear.V. Làm cách nào để sử dụng hàm dim
để nhận kích thước của vec-tơ? Làm cách nào để sử dụng trace
trên một ma trận vuông lớn được làm bằng lồng nhau V
s? Tôi gặp lỗi trong cả hai trường hợp này.Làm cách nào để sử dụng vectơ có kích thước biến trong thư viện "Tuyến tính" của Edward Kmett?
mã tối thiểu:
import qualified Data.Vector as Vector
import Linear.V (V(V), dim)
import Linear.Vector (outer)
import Linear.Matrix (trace)
v, w :: V n Double -- What do I do here?
v = V $ Vector.fromList [1..5]
w = V $ Vector.fromList [2, 3, 5, 7, 11]
d = dim v
m = outer v w
t = trace m
Nó cung cấp cho các lỗi mà tôi không hiểu:
• Ambiguous type variable ‘n0’ arising from a use of ‘dim’
prevents the constraint ‘(Linear.V.Dim n0)’ from being solved.
Probable fix: use a type annotation to specify what ‘n0’ should be.
These potential instances exist:
two instances involving out-of-scope types
(use -fprint-potential-instances to see them all)
• In the expression: dim v
In an equation for ‘d’: d = dim v
• Ambiguous type variable ‘n1’ arising from a use of ‘trace’
prevents the constraint ‘(Linear.V.Dim n1)’ from being solved.
Probable fix: use a type annotation to specify what ‘n1’ should be.
These potential instances exist:
two instances involving out-of-scope types
(use -fprint-potential-instances to see them all)
• In the expression: trace m
In an equation for ‘t’: t = trace m
Bạn không nên sử dụng trực tiếp hàm tạo 'V', vì bạn có thể dễ dàng vi phạm bất biến mà chiều dài vectơ và chỉ mục mức loại cho biết độ dài không khớp. Sử dụng 'Linear.V.fromVector (fromList [1 ..5]) :: V 5 Double' - lưu ý rằng ở đây nếu bạn chỉ định độ dài sai ở mức loại thì hàm này cho bạn 'Nothing', và với kiểu này' dim' sẽ có thể thỏa mãn 'Dim n' ('Dim 5' trong trường hợp này) ràng buộc. Nếu bạn thực sự muốn loại 'tồn tại độ dài. Độ dài V X' thì loại đó chính xác là 'Vector X'. – user2407038
Hmm. @ user2407038 là đúng, nhưng có một cái gì đó fishy về 'dấu vết' - vì một lý do tôi dường như không thể thuyết phục GHC rằng ràng buộc' Trace' là hài lòng ... – Alec