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 ()
...