For my project I found it useful to represent semigroup/monoid actions on a type as a (multi-param) type class. It's basically just a class definition, nothing more, but I felt it could well fit into semigroups.
Note that I didn't test it with Hugs (I don't know how to ask cabal to use hugs instead of GHC, for some reason cabal configure --hugs didn't compile anything).
cabal configure --hugs
Added module for semigroup/monoid actions on sets.
Unfortunately, I can't add an MPTC to this package, since it is used as a haskell 98 core package by many other libraries. =(
This could probably be put in a separate semigroup-actions package, quite reasonably though.
OK, I'll make a separate package.