Thanks! Learn something new every day. =)

-Edward Kmett

On Wed, Nov 18, 2009 at 4:29 PM, David Menendez <dave@zednenem.com> wrote:
On Wed, Nov 18, 2009 at 4:12 PM, Edward Kmett <ekmett@gmail.com> wrote:
>
> Qualified imports are some times problematic when you need to work with
> classes from the module. You can't define a member of two instances from
> different two modules that define classes with conflicting member names.
> This can lead to situations where you have no option but to have orphan
> instances.
>
> module Bar where
> class Foo a where
>    foo :: a
>
> module Baz where
> class Quux a where
>   foo :: a
>
> module Quaffle where
> import qualified Bar
> import qualified Baz
>
> instance Bar.Foo Int where
>   Bar.foo = 1
> -- ^- syntax error.
>
> instance Baz.Quux Int where
>   Baz.foo = 2
>
> I suppose this could possibly be fixed if something deep in the parser
> allowed a QName there.

Try Quaffle without the qualifications.

> module Quaffle where
> import qualified Bar
> import qualified Baz
>
> instance Bar.Foo Int where
>   foo = 1
>
> instance Baz.Quux Int where
>   foo = 2


--
Dave Menendez <dave@zednenem.com>
<http://www.eyrie.org/~zednenem/>