[Haskell-cafe] GHC API: type class instance check

Miguel migmit at gmail.com
Fri Nov 11 10:00:45 UTC 2016


True, but what if it's the other way around? What if OtherModule imports M?
Your code in M would think there is no instance and behave accordingly, and
when it comes to OtherModule there would be one, so, your compiled code
would operate on incorrect assumption. Isn't it dangerous?

And what about instances that have context? What if module M contains
something like

data T a = ...
instance OtherClass a => C (T a)

and later OtherModule adds

instance OtherClass a

?

On Fri, Nov 11, 2016 at 10:55 AM, J. Stutterheim <j.stutterheim at me.com>
wrote:

> Yes, that's true, but suppose we have
>
>         module M where
>
>         import OtherModPossiblyWithInstance
>
> Then as far as I understand, the compiler will have processed
> OtherModPossiblyWithInstance already and the existence of class instances
> in OtherModPossiblyWithInstance should be know.
>
> > On 11 Nov 2016, at 10:07, MigMit <migmit at gmail.com> wrote:
> >
> > I'm no expert in GHC plugins, but isn't it true that class instances can
> be added in other modules? So that this information is simply not available
> when compiling one?
> >
> >> On 11 Nov 2016, at 08:57, J. Stutterheim <j.stutterheim at me.com> wrote:
> >>
> >> Hi all,
> >>
> >> I'm writing a core-to-core GHC plugin and have two questions:
> >>
> >> - Given some t :: Type, how can I check whether there exists an
> instance of some type class C for t?
> >> - How can I check whether some type class C exists, and if so, how can
> I get a value c (presumably :: Class) of this class?
> >>
> >> Thanks!
> >>
> >> - Jurriƫn_______________________________________________
> >> Haskell-Cafe mailing list
> >> To (un)subscribe, modify options or view archives go to:
> >> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> >> Only members subscribed via the mailman list are allowed to post.
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20161111/a205fe71/attachment.html>


More information about the Haskell-Cafe mailing list