Haskell:多个文件的酸状态?

sqd*_*sqd 3 haskell acid-state

我有这样的文件结构:

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

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

--- Post.hs
import Database
addPost :: Update Database ()
...
Run Code Online (Sandbox Code Playgroud)

问题是,我要叫makeAcidic ''Database [...]两个User.hs,并Post.hs让自己的职能酸性,但makeAcidic在同一时间产生IsAcidic的实例为Database这样GHC抱怨重复实例声明.

sqd*_*sqd 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 ()
...
Run Code Online (Sandbox Code Playgroud)