Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Haskell: acid-state over multiple files?

I have a file structure like this:

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

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

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

The problem is that I need to called makeAcidic ''Database [...] in both User.hs and Post.hs to make their functions acidic, but makeAcidic at the same time generate IsAcidic instances for Database so GHC complains about duplicate instance declarations.

like image 323
sqd Avatar asked Jan 29 '26 14:01

sqd


1 Answers

OK, so I figure it out. Just separate the definition with the 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 ()
...
like image 117
sqd Avatar answered Jan 31 '26 05:01

sqd



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!