我想在我自己的类型中包含一些Data.Vec
类型,但它似乎不起作用。例如,我想拥有自己的Vec3
Vec3F
,所以我做了类似的事情:
types.h中:
module Types
( Vec3(..)
) where
import qualified Data.Vec as V
type Vec3 = V.Vec3 Float
Main.hs :
import Types
vect :: Vec3
vect = Vec3 3 2 4
main = return ()
GHC抱怨并给我这个错误:
Main.hs:4:8: Not in scope: data constructor `Vec3'
是不是因为我的新类型与Data.Vec
的类型同名,尽管我做了合格的导入?
如果是这样的话,可以不改变我的类型名称吗?
如果没有,我如何从我的Types
模块中仅导出某些类型的Data.Vec
?
答案 0 :(得分:1)
Vec3
不是数据构造函数,它是type(在本例中为class
)。也许你可以在构造函数周围包装自己的包装器来实现你想要的东西?
makeVec :: (Double,Double,Double) -> Vec3
makeVec = V.fromXYZ -- TODO some float mangling