3

我有这样的文件结构:

--- Database.hs ---
data Database = ...
...

--- User.hs ---
import Database
addUser :: Update Database ()
...

--- Post.hs
import Database
addPost :: Update Database ()
...

问题是我需要同时调用makeAcidic ''Database [...]它们User.hs并使Post.hs它们的函数变酸,但makeAcidic同时生成IsAcidic实例,Database因此 GHC 抱怨重复的实例声明。

4

1 回答 1

5

好的,所以我想通了。只需将定义与 Template Haskell 分开:

--- Database/Types.hs ---
data Database = ...
...

--- Database.hs ---
import Database.Types
import User
import Post
makeAcidic ''Database [addUser, addPost]

--- User.hs ---
import Database.Types
addUser :: Update Database ()
...

--- Post.hs ---
import Database.Types
addPost :: Update Database ()
...
于 2016-07-26T02:30:21.927 回答