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

Dan*_*l K 6 haskell

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

import Data.Vec.Packed
Run Code Online (Sandbox Code Playgroud)

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

Vec3D数据构造被宣布像这样的Data.Vec.Packed模块:

instance PackedVec (Vec3 Double) where
  data Packed (Vec3 Double) = Vec3D {-#UNPACK#-} !Double {-#UNPACK#-} !Double {-#UNPACK#-} !Double
...
Run Code Online (Sandbox Code Playgroud)

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

import Data.Vec.Packed (Packed (Vec3 Double)(..))
Run Code Online (Sandbox Code Playgroud)

如何只导入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’
Run Code Online (Sandbox Code Playgroud)

Isa*_*kel 0

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

\n\n

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

\n\n

在 GHCi 中通过:info Vec3D演示对此进行测试

\n\n
data instance Packed (Data.Vec.Base.Vec3 Double)\n  = Vec3D {-# UNPACK #-}Double\n          {-# UNPACK #-}Double\n          {-# UNPACK #-}Double\n        -- Defined in \xe2\x80\x98Data.Vec.Packed\xe2\x80\x99\n
Run Code Online (Sandbox Code Playgroud)\n