2016-07-26 6 views
3

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

ответ

5

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