Haskell 如何导入newtype实例
我将生成记录类型的持久代码提取到一个单独的模块Dao中 我希望保持导入的干净和严格,所以我尝试显式地从Dao模块导入我需要的所有类型和函数。我坚持使用newtype实例作为键。钥匙不是我喜欢的类型。它是在持久化库中定义的Haskell 如何导入newtype实例,haskell,ghc,Haskell,Ghc,我将生成记录类型的持久代码提取到一个单独的模块Dao中 我希望保持导入的干净和严格,所以我尝试显式地从Dao模块导入我需要的所有类型和函数。我坚持使用newtype实例作为键。钥匙不是我喜欢的类型。它是在持久化库中定义的 import Dao -- work but it is a mystery how much is imported GHC 8.6.5看起来相当聪明,甚至试图帮助我克服困难: In module `Dao': `RedirectMappingRKey'
import Dao -- work but it is a mystery how much is imported
GHC 8.6.5看起来相当聪明,甚至试图帮助我克服困难:
In module `Dao':
`RedirectMappingRKey' is a data constructor of `Key'
To import it use
import Dao( Key( RedirectMappingRKey ) )
or
import Dao( Key(..) )
|
52 | import Dao (openDbPool, RedirectMappingR(..), RedirectMappingRKey)
但GHC建议的两个版本均被其拒绝:
Module `Dao' does not export `Key(RedirectMappingRKey)'
|
52 | import Dao (openDbPool, RedirectMappingR(..), Key(RedirectMappingRKey))
或
实例定义
*Dao> :i RedirectMappingRKey
newtype instance persistent-2.9.2:Database.Persist.Class.PersistEntity.Key
RedirectMappingR
= RedirectMappingRKey {...}
我没主意了,也许有资格的进口能帮我,
但我想知道最好的解决办法
钥匙不是我喜欢的类型。它是在持久化库中定义的
然后您不能从Dao导入它,除非Dao在其导出列表中明确列出了键,请参见。若要使用密钥,必须将持久性库添加为依赖项,然后导入Database.Persist.Class-Key。。从persistent导入它。您能显示Dao的导出列表吗?
*Dao> :i RedirectMappingRKey
newtype instance persistent-2.9.2:Database.Persist.Class.PersistEntity.Key
RedirectMappingR
= RedirectMappingRKey {...}