[GHC] #12791: Superclass methods could be more aggressively specialised.
GHC
ghc-devs at haskell.org
Wed Nov 2 13:38:02 UTC 2016
#12791: Superclass methods could be more aggressively specialised.
-------------------------------------+-------------------------------------
Reporter: mpickering | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by ryantrinkle):
simonpj: Yes. I've always encouraged the abstract style (
{{{
(MonadReader r m, MonadWriter w m) => m a
}}}
rather than
{{{
ReaderT r (WriterT w m) a
}}}
), so that the concrete monad transformer stack can be changed without
modifying user code. It has worked really well to help keep code clean
and organized (especially with GHC 8.0's warnings for unused constraints).
So, in a typical reflex widget, there will be several constraints, e.g.
DomBuilder t m, PerformEvent t m, PostBuild t m. Reflex is currently a
superclass of all of these, since the 't' parameter is only meaningful for
its Reflex instance. I haven't looked into whether it's possible to
eliminate Reflex from all of these classes, but I'll certainly try to do
that if it'll help with optimization.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12791#comment:14>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list