<div dir="ltr"><div><div><div>I think the same result could be done with template haskell, but probably some cases might not end up working the way they should. For example, what happens if the instance declaration needed is at the end of the file, what happens if we make c ~ Typeclassable [to use your name]? I have an incomplete sketch at <<a href="https://github.com/aavogt/IsInstance">https://github.com/aavogt/IsInstance</a>><br><br></div>I have a feeling that Typeclassable / IsInstance raises the same objections that OverlappingInstances does, since my TH code depends on that extension.<br><br></div>Regards,<br></div>Adam<br><div><div><div><div><div><div><div><div><br>On Mon, Aug 3, 2015 at 11:02 AM, Zemyla <<a href="mailto:zemyla@gmail.com">zemyla@gmail.com</a>> wrote:<br>><br>> I apologize if this has been discussed and dismissed before, but I figured with Typeable being made entirely automatic by GHC, this might have a shot at working.<br>><br>> What if there were a typeclass called Typeclassable, whose definition would be:<br>><br>> class (Typeable a) => Typeclassable a where<br>>     typeClass :: (Typeable c) => proxy c -> proxy' a -> ((c a) => b) -> b -> b<br>><br>> So, for a simple example, you might have:<br>> nubT :: (Typeclassable a, Eq a) => [a] -> [a]<br>> nubT ls = typeClass (Proxy :: Proxy Ord) ls (nubOrd ls) (nub ls)<br>><br>> where nubOrd is a suitable implementation of nub that requires Ord a.<br>><br>> Basically, my first thought for the implementation of Typeclassable is that it contains all the dictionaries for a in a hashtable, and searches through them with the typeRep of c.<br>><br>> So:<br>> 1) Can this be implemented with GHC as it is now?<br>> 2) Could this be implemented at all with any reasonable amount of work?<br>> 3) Should this be implemented? Would the benefits outweigh the costs?<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">_______________________________________________<br>
Haskell-Cafe mailing list<br>
<a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe</a><br>
<br></blockquote></div><br></div></div></div></div></div></div></div></div></div></div>