> Do you want to mix differently typed Connections inside a single
> transaction? It looks like you don't, so you may well leave out
> existential types altogether and simply parametrize the Transaction
> monad on the type of the connection it uses.
> 
>   data Connection c => TransactionState c = TS c
>   data Transaction c a =
>      Transaction (TransactionState c -> (a, TransactionState c)
> 
>   instance Monad (Transaction c) where ...
> 
>   getConnection :: Transaction c c
>   ...
> 
> Note that Control.Monad.State does the same.
> 
> Regards,
> apfelmus

You are correct in that I don't want to mix different kind of connections 
inside a single transaction. I just didn't want to have to parameterize every 
single function using the monad.

doSomething :: Transaction FirebirdConnection ()

doSomethingElse :: Transaction FirebirdConnection ()

Maybe I'm misunderstanding something but as I see it that would kind of stop 
me from running doSomething and doSomethingElse using different kinds of 
databases.


_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to