I have a hard time fully understanding this request without more context. But I 
do think I understand the last paragraph. And it seems bound to create class 
incoherence. What if someone else *does* write that orphan instance you're 
avoiding writing?

Richard

On Aug 22, 2015, at 12:54 PM, David Feuer <david.fe...@gmail.com> wrote:

> From time to time, a library lacks an instance for something that I want. For 
> example, I may need to convert
> 
> data Foo = Bar (Vector Baz)
> 
> to FishFood, but (to avoid unreasonable dependencies) Vector doesn't have a 
> ToFishFood instance, so I can't just write
> 
> instance ToFishFood Foo
> 
> and (using Generic magic) be done with it. Instead, I must write the instance 
> completely by hand, which could be painful. I *could* write an orphan 
> instance, but orphans are evil.
> 
> What I wish I could do:
> 
> newtype Vec a = Vec (Vector a)
> 
> instance ToFishFood a => (newtype Vec) a where
>   -- if needed
>   toFishFood (v :: Vector a) = ...
> 
> That is, I want to write a super-secret orphan instance for Vector and 
> transfer it to Vec via GND precisely when it is legal to do so. The secret 
> instance could itself be derived (if the constructors are visible) or could 
> make use of default member definitions.
> 
> _______________________________________________
> ghc-devs mailing list
> ghc-devs@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to