Overlapping and incoherent instances
Dan Doel
dan.doel at gmail.com
Mon Aug 11 19:35:42 UTC 2014
On Mon, Aug 11, 2014 at 11:36 AM, Twan van Laarhoven <twanvl at gmail.com>
wrote:
> To me, perhaps naively, IncoherentInstances is way more scary than
> OverlappingInstances.
>
It might be a bit naive. Most things that incoherent instances would allow
are allowed with overlapping instances so long as you partition your code
into two modules. So unless such a partitioning is impossible, overlapping
instances are almost as scary as incoherent instances (unless the module
separation somehow makes it less scary).
And actually, with the way GHC handles instances, you can get more
incoherent behavior than incoherent instances allow without enabling any
extensions, just using modules:
module A where
class Foo a where foo :: a
module B where
import A
instance F
oo Int where foo = 5
bar :: Int ; bar = foo
module C where
import A
instance Foo Int where foo = 6
baz :: Int ; baz = foo
module D where
import B
import C
quux = bar + baz -- 11
--
Dan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/glasgow-haskell-users/attachments/20140811/4dce2b59/attachment.html>
More information about the Glasgow-haskell-users
mailing list