2014-06-25 105 views
1

我在hMatrix上使用函數fromBlocks,其列表的元素由Int -> Int -> Int -> Matrix Int類型的函數確定。然而,GHC笙歌說:Haskell - hMatrix上的實例聲明

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結果的類型,但它沒有工作,我不知道如何申報類型,使用時功能。

回答

1

沒有 - 真的沒有實例Element Int - 在這裏看到:http://hackage.haskell.org/package/hmatrix-0.16.0.3/docs/Numeric-LinearAlgebra-HMatrix.html#t:Element

只是去Matrix FloatMatrix Double如果你可以按照第

+0

大,謝謝! – guaraqe

+0

Alberto(包裝作者)贊同vivian這個答案是不正確的。 – vivian

+0

然後,也許給一個提示什麼是錯的,我們可以修復它 - 哦等待你只是想推你自己的答案... – Carsten

0

只是聲明瞭一個instance Element Int [1]。需要警告的是,許多發燒友功能僅限於DoubleFloat

[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 ] 
+0

這是正確的。可以這樣做: 實例元素詮釋 A =(2><3)[1 ..] ::矩陣詮釋 Z =(1><1)[0] ::矩陣詮釋 米= fromBlocks [[A,Z],[A,A]] >米 (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] 但也有關於INT元件很少有用的操作。 –