如何导入这个复杂的数据构造函数,仅此而已?

时间:2016-06-03 07:24:45

标签: haskell

我想从Vec包中导入Vec3D数据构造函数Data.Vec.Packed模块。显然,我可以

import Data.Vec.Packed

并完成了一些事情,但这不是我想要做的事情,因为这会为当前的范围增加额外的东西。

Vec3D数据构造函数在Data.Vec.Packed模块中声明如下:

instance PackedVec (Vec3 Double) where
  data Packed (Vec3 Double) = Vec3D {-#UNPACK#-} !Double {-#UNPACK#-} !Double {-#UNPACK#-} !Double
...

我尝试了这个,但它没有编译:

import Data.Vec.Packed (Packed (Vec3 Double)(..))

如何只导入Vec3D数据构造函数?

仅供参考,如果您在ghci中导入模块:

* Data.Vec> :info  Vec3D
data instance Packed (Vec3 Double)
  = Vec3D {-# UNPACK #-}Double
          {-# UNPACK #-}Double
          {-# UNPACK #-}Double
    -- Defined in ‘Data.Vec.Packed’

type Vec3D = Packed (Vec3 Double)   -- Defined in ‘Data.Vec.Packed’

1 个答案:

答案 0 :(得分:0)

要将构造函数与族导入捆绑在一起,可以编写

import Data.Vec.Packed (Packed(Vec3D))

使用:info Vec3D在GHCi中进行测试显示

data instance Packed (Data.Vec.Base.Vec3 Double)
  = Vec3D {-# UNPACK #-}Double
          {-# UNPACK #-}Double
          {-# UNPACK #-}Double
        -- Defined in ‘Data.Vec.Packed’