如何导入新类型实例
How to import newtype instance
我将生成记录类型的持久代码提取到一个单独的模块中 (Dao)
我想保持导入干净和严格,所以我尝试从 Dao 模块中显式导入我需要的所有类型和函数。我坚持使用 Key 的 newtype 实例。关键不是我喜欢的类型。它在持久库中定义。
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))
或
C:\pro\demo\haskell\servant\myproject\src\Lib.hs:52:47: error: Module `Dao' does not export `Key(..)'
|
52 | import Dao (openDbPool, RedirectMappingR(..), Key(..))
| ^^^^^^^
实例定义
*Dao> :i RedirectMappingRKey
newtype instance persistent-2.9.2:Database.Persist.Class.PersistEntity.Key
RedirectMappingR
= RedirectMappingRKey {...}
我运行没主意了,可能合格的进口可以帮我,
但我想知道最好的解决方案。
Key is not my type family. It is defined in persist library
那么你不能从 Dao
导入它,除非 Dao
在其导出列表中特别列出 Key
(参见 https://taylor.fausak.me/2016/12/30/automatically-export-haskell-modules/)。为了使用 Key
,您必须添加 persistent
库作为依赖项,然后执行 import Database.Persist.Class (Key(..))
从 persistent
.
导入它
我将生成记录类型的持久代码提取到一个单独的模块中 (Dao) 我想保持导入干净和严格,所以我尝试从 Dao 模块中显式导入我需要的所有类型和函数。我坚持使用 Key 的 newtype 实例。关键不是我喜欢的类型。它在持久库中定义。
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))
或
C:\pro\demo\haskell\servant\myproject\src\Lib.hs:52:47: error: Module `Dao' does not export `Key(..)'
|
52 | import Dao (openDbPool, RedirectMappingR(..), Key(..))
| ^^^^^^^
实例定义
*Dao> :i RedirectMappingRKey
newtype instance persistent-2.9.2:Database.Persist.Class.PersistEntity.Key
RedirectMappingR
= RedirectMappingRKey {...}
我运行没主意了,可能合格的进口可以帮我, 但我想知道最好的解决方案。
Key is not my type family. It is defined in persist library
那么你不能从 Dao
导入它,除非 Dao
在其导出列表中特别列出 Key
(参见 https://taylor.fausak.me/2016/12/30/automatically-export-haskell-modules/)。为了使用 Key
,您必须添加 persistent
库作为依赖项,然后执行 import Database.Persist.Class (Key(..))
从 persistent
.