[GHC] #8021: Multiple constraint classes - the alternative to superclass
GHC
ghc-devs at haskell.org
Fri Jun 28 23:50:31 CEST 2013
#8021: Multiple constraint classes - the alternative to superclass
-----------------------------+----------------------------------------------
Reporter: wvv | Owner:
Type: feature request | Status: new
Priority: normal | Component: Compiler
Version: 7.6.3 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: None/Unknown | Blockedby:
Blocking: | Related:
-----------------------------+----------------------------------------------
This is alternative to SuperClasses - multiple constraint Classes
Now:
{{{
class Monoid a where ...
class Monad m => MonadPlus m where ...
}}}
It could be:
{{{
class Monoid a where ...
class Monad m => Monoid m where ...
class Arrow c => Monoid c where ...
foo :: Monad m => Monoid m => m a
}}}
all classes must have same functions with same kind.
And if you wish to write superclass, it would be easy to write
{{{
class BeforeNum a where ....
class BeforeNum a => Num a where ...
foo :: BeforeNum a => Num a => a
}}}
'''Backward compatibility'''
If class have single constraint, you could write without it.
If class have many constrains, you could write without it, if it is empty
one.
{{{
bar :: MonadPlus m => m a <<==>> bar :: Monad m => MonadPlus m => m a
foo :: Monoid a => a <<==>> foo :: () => Monoid a => a
}}}
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/8021>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list