Petr,Your subject header is misleading: FDs don't make sense without MPTCs.As you acknowledge at the end, what you're ultimately asking is: to FD or not to FD.Note also, the contemporary debate has shifted to TFs (type families) vs FDs.-- Kim-EeOn Fri, Dec 21, 2012 at 7:38 PM, Petr P <petr.mvd@gmail.com> wrote:_______________________________________________Dear Haskellers,I'm working on a small library for representing semigroup (or monoid) actions on a set <http://hackage.haskell.org/package/semigroups-actions>.The MultiParamTypeClasses extension seems to be best suited for the task, as a group can act on many sets, and a set can be acted on by different groups:-- | Represents an action of semigroup @g@ to set @a@.---- Laws: @'Endo' . 'act'@ must be a homomorphism of semigroups.class Semigroup g => SemigroupAct g a whereact :: g -> (a -> a)But soon I realized that with MPTC the compiler has problems inferring types and I had to explicitly specify types when using `act` in many places. Because it seems that in most cases a set will have only a single group acting on it, I was thinking about using FDs:class Semigroup g => SemigroupAct g a | a -> g whereBut on the other hand, this can limit the generality of the type class. I cannot decide which one I should choose.What would you suggest? According to your experience, would you choose plain MPTC or FD?Best regards,Petr Pudlak
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe