I'm not sure if it really could work out at all. The concept is that I want
the newtype wrapper to get the class defaults the wrapped type would have
gotten (whether the wrapped type is actually a class instance or not).
On Aug 24, 2015 8:39 AM, "Richard Eisenberg" <e...@cis.upenn.edu> wrote:

> 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