Haskell: кислотное состояние для нескольких файлов?

У меня есть такая структура файла:

--- 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 жалуется на дубликаты объявлений экземпляров.

1 ответ

ОК, так что я понял это. Просто разделите определение с шаблоном 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 ()
...
Другие вопросы по тегам