1

我在一个列表上使用fromBlockshMatrix 中的函数,该列表的元素由 type 的函数确定Int -> Int -> Int -> Matrix Int。然而,GHC 抱怨说:

No instance for (Element Int) arising from a use of `fromBlocks'
    Possible fix: add an instance declaration for (Element Int)
    In the expression:
      fromBlocks [[matrixCreate n m d], [rowZero n m d]]

我试图告诉 GHC 这个计算结果的类型,:: Matrix Int但它不起作用,我不明白在使用函数时如何声明类型。

4

2 回答 2

1

不 - 真的没有实例Element Int- 见这里:http ://hackage.haskell.org/package/hmatrix-0.16.0.3/docs/Numeric-LinearAlgebra-HMatrix.html#t:Element

去吧,Matrix Float或者Matrix Double如果可以的话

于 2014-06-25T09:32:15.590 回答
0

只需instance Element Int按照 [1] 中的描述声明一个。请注意,许多更高级的函数只为Double和定义Float

[1] https://github.com/albertoruiz/hmatrix/issues/28

编辑:添加阿尔贝托的评论:

instance Element Int

a = (2><3) [1..] :: Matrix Int

z = (1><1) [0] :: Matrix Int

m = fromBlocks [[a,z],[a,a]]

> m

(4><6)
 [ 1, 2, 3, 0, 0, 0
 , 4, 5, 6, 0, 0, 0
 , 1, 2, 3, 1, 2, 3
 , 4, 5, 6, 4, 5, 6 ]
于 2014-06-26T19:57:30.583 回答