Coercible class (Was: newtype wrappers)
Richard Eisenberg
eir at cis.upenn.edu
Sun Sep 15 21:24:15 UTC 2013
Because, from a user's point of view, defining
> newtype Age = MkAge Int
automatically creates Coercible instances
> instance Coercible Age Int
> instance Coercible Int Age
and defining datatypes also creates instances. This looks like a user-visible language feature to me, and I think it should be documented in the manual.
unsafeCoerce, rightly, need not be, because it's just a perfectly ordinary function with a rather extraordinary type.
Richard
On Sep 15, 2013, at 5:00 PM, Roman Cheplyaka <roma at ro-che.info> wrote:
> Could you explain why you think it's a language feature? We have plenty
> of "magic" stuff like unsafePerformIO, unsafeCoerce, or StableNames,
> which are not documented in the manual.
>
> Just curious.
>
> Roman
>
> * Richard Eisenberg <eir at cis.upenn.edu> [2013-09-15 16:48:16-0400]
>> Very cool!
>>
>> In the feature as pushed, is it possible to use coerce on any old newtype? If so, then it really is a language feature and probably should go into the manual, if `coerce` is exposed.
>>
>> What was the end result of the discussion on abstraction? Can a library control how its types are coerced?
>>
>> Richard
>>
>> On Sep 13, 2013, at 6:13 PM, Joachim Breitner <mail at joachim-breitner.de> wrote:
>>
>>> Hi,
>>>
>>> Am Montag, den 09.09.2013, 11:26 -0500 schrieb Austin Seipp:
>>>> It sounds like Simon thinks your work is good to go, so when your tree
>>>> is clean, feel free to push.
>>>
>>> done!
>>>
>>> Given that in the final form the feature, to the user, looks like a
>>> library and not a language extension, I decided to put the documentation
>>> not in the users guide, but only in the haddock for coerce and
>>> Coercible.
>>>
>>> So far they only live in GHC.Prim. Should we expose them in GHC.Prim for
>>> 7.8, or only in 7.10?
>>>
>>> Greetings,
>>> Joachim
>>>
>>> --
>>> Joachim “nomeata” Breitner
>>> mail at joachim-breitner.de • http://www.joachim-breitner.de/
>>> Jabber: nomeata at joachim-breitner.de • GPG-Key: 0x4743206C
>>> Debian Developer: nomeata at debian.org
>>> _______________________________________________
>>> ghc-devs mailing list
>>> ghc-devs at haskell.org
>>> http://www.haskell.org/mailman/listinfo/ghc-devs
>>
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://www.haskell.org/mailman/listinfo/ghc-devs
More information about the ghc-devs
mailing list