我剛開始接觸的Haskell Haskell的數據類型,我已讀了LYAH的定義數據類型的部分,我試圖實現對信仰傳播和積算法。其中一項基本任務是定義概率圖形模型。爲HMATRIX向量和矩陣
如下所示,我已經嘗試通過綁結來表示,其中每個節點代表一個高斯分佈,並且具有恆重鏈接(現在)的圖表將它的鄰居來創建的曲線圖。然而,當試圖定義均值和協方差類型時,我在指定矩陣和矢量類型的類型時遇到了一些困難,即浮點或雙精度。
module Graph(Graph) where
import Numeric.LinearAlgebra
data Mean = Mean Vector
data Covariance = Covariance Matrix
data Gaussian = Gaussian Mean Covariance
data Node = Node [Node] Gaussian
data Graph = Graph [Node]
在這個簡單的例子中,將Mean定義爲Double類型的向量和協方差類型爲Double類型的Matrix的語法是什麼。此外,如何推廣Mean
和Covariance
可以是浮點型還是雙精度型?
我目前得到GHCI
以下Graph.hs:5:18: error:
• Expecting one more argument to ‘Vector’
Expected a type, but ‘Vector’ has kind ‘* -> *’
• In the type ‘Vector’
In the definition of data constructor ‘Mean’
In the data declaration for ‘Mean’
Failed, modules loaded: none.
我用HMATRIX包描述here
多麼美妙的答案;謝謝!這已經爲我清除了一些東西。我對打結和無意造成無限的結構有一些懷疑。另一種方式(保持鄰接矩陣等)看起來很不雅觀。 –