【发布时间】:2017-03-25 22:37:18
【问题描述】:
我刚开始使用 Haskell,我已经阅读了 LYAH 的定义数据类型部分,并正在尝试为信念传播实现 Sum-Product 算法。基本任务之一是定义概率图形模型。
如下所示,我试图通过打结来创建一个图形,以表示每个节点代表一个高斯分布的图形,并且与它的邻居有恒定的权重链接(目前)。但是,在尝试定义 Mean 和 Covariance 类型时,我很难指定 Matrix 和 Vector 类型的类型,即 Float 或 Double。
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 类型的 Vector 和 Covariance 定义为 Double 类型的 Matrix 的语法是什么。此外,如何进行概括以使 Mean 和 Covariance 可以是 Float 或 Double 类型?
我目前从 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.
我正在使用 here 描述的 hmatrix 包
【问题讨论】:
标签: haskell graph functional-programming ghci