首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell -合格进口后的类型不兼容

Haskell -合格进口后的类型不兼容
EN

Stack Overflow用户
提问于 2014-06-25 11:52:53
回答 3查看 132关注 0票数 1

我使用的是hMatrix,代码的第一行是:

代码语言:javascript
复制
import Numeric.LinearAlgebra
import qualified Data.Vector as V

问题是,在我的代码中,向量类型是V.Vector,但是hMatrix定义的一些方法的类型是Vector -> ...,当我尝试使用这些方法时,GHC不理解它们,说它们不是为V.Vector类型定义的。我该如何解决这个问题?

更新:

来自hMatrix的文档:

Vector类型是Roman的向量包中的Storable向量,因此这个库提供的所有数组处理工具都是直接可用的。

然而,像(++)这样的基本运算符(它存在于Data.Vector.Storable中)并不包含在hMatrix中。是不可能从hMatrix中使用这些类型,还是有一些简单的方法可以告诉编译器这些类型是相同的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-25 12:04:45

可以为Vector类型添加显式导入:

代码语言:javascript
复制
import Numeric.LinearAlgebra
import qualified Data.Vector as V
import Data.Vector (Vector)

不过,我不知道外部模块可能会崩溃,这取决于您如何导入它们所依赖的模块。

票数 1
EN

Stack Overflow用户

发布于 2014-06-25 12:06:36

hmatrix使用它自己的Data.Packed.Vector类型,它与Data.Vector不同。

要么在代码中使用Data.Packed.Vector,要么在调用函数之前将Data.Vector转换为Data.Packed.Vector

票数 3
EN

Stack Overflow用户

发布于 2014-06-26 16:50:32

请注意,您不能仅仅因为导入另一个模块就破坏hmatrix。由于vector提供了不同类型的向量,包括一个适用于所有这些向量的.Generic接口,所以只会出现类型不匹配。

你可能有一些类似于

代码语言:javascript
复制
import Data.Vector
f :: Vector Int -> Vector Int
f = whatever

如果导入Data.Vector.Generic,则可以编写适用于所有向量类型的函数,包括那些由hmatrix使用的函数。

代码语言:javascript
复制
import Data.Vector.Generic
f :: Vector Int -> Vector Int
f xs = xs ++ empty

应该与h矩阵向量一起工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24407962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档