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-Ee On Fri, Dec 21, 2012 at 7:38 PM, Petr P <[email protected]> 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 where > act :: 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 where > > But 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 > [email protected] > http://www.haskell.org/mailman/listinfo/haskell-cafe > >
_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
