new-typeable, new cast?
Edward Kmett
ekmett at gmail.com
Mon Jul 22 17:14:22 CEST 2013
I favor keeping them undeprecated as I currently have code that needs the lack of a Typeable constraint there in cases where the argument plays a similar role to the region parameter for ST s, where it *can't* be made Typeable!
On the plus side, you may be able to eliminate the requirement that the arguments be of kind * though, rather dramatically increasing the utility of gcast1 and gcast2.
-Edward
On Jul 22, 2013, at 5:38 AM, José Pedro Magalhães <jpm at cs.uu.nl> wrote:
> Hi,
>
> On Mon, Jul 22, 2013 at 10:19 AM, Richard Eisenberg <eir at cis.upenn.edu> wrote:
>> There seems to be a small tangle. The proposal includes deprecating gcast1 and gcast2 in favor of the poly-kinded gcast. But, there is a small discrepancy between these. Here are the type signatures:
>>
>>> gcast :: forall a b c. (Typeable a, Typeable b) => c a -> Maybe (c b)
>>> gcast1 :: forall c t t' a. (Typeable (t :: * -> *), Typeable t')
>>> => c (t a) -> Maybe (c (t' a))
>>
>> The difference is that gcast1 does *not* require the variable `a` to be Typeable, whereas defining gcast1 = gcast does require this. Not requiring `a` to be Typeable seems correct to me, as the type signature of gcast1 requires both uses of `a` to be the same. But, gcast isn't smart enough to know that. Here are some ideas of how to proceed:
>>
>> - Keep gcast1 and gcast2 undeprecated.
>
> I'd say we should go for this first option, because the second one is pretty bad.
>
>
> Cheers,
> Pedro
>
>> - Require clients to add more Typeable constraints (for example, in Data.Data) to get their code to compile with gcast.
>> - Come up with some other workaround, but none is striking me at the moment.
>>
>> Thoughts?
>>
>> Richard
>>
>>
>> On 2013-07-22 09:44, Richard Eisenberg wrote:
>>> I was waiting to respond to Shachaf's email saying "pushed", but
>>> instead, I have to say "currently validating".
>>>
>>> Expect this by the end of the day. Sorry it's taken so long!
>>>
>>> Richard
>>>
>>> On 2013-07-22 09:23, José Pedro Magalhães wrote:
>>>> Thanks for bringing this up again. This was started in my data-proxy
>>>> branch of base [1],
>>>> but never really finished. We definitely want to have this in 7.8, and
>>>> I think there's
>>>> only some minor finishing work to do (check if we have all the
>>>> instances we want,
>>>> document, etc.). Perhaps you can look through what's there already,
>>>> and what you
>>>> think is missing? I'm more than happy to accept contributing patches
>>>> too :-)
>>>>
>>>> Thanks,
>>>> Pedro
>>>>
>>>> On Sun, Jul 21, 2013 at 3:09 AM, Shachaf Ben-Kiki <shachaf at gmail.com>
>>>> wrote:
>>>>
>>>>> On Mon, Mar 4, 2013 at 11:12 AM, José Pedro Magalhães
>>>>> <jpm at cs.uu.nl> wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On Mon, Mar 4, 2013 at 4:51 PM, Richard Eisenberg
>>>>> <eir at cis.upenn.edu> wrote:
>>>>>>>
>>>>>>> Unless I'm missing something, this all looks very
>>>>> straightforward. The
>>>>>>> implementation is there, already, in the guise of (gcast Refl).
>>>>> We would
>>>>>>> just shuffle the definitions around a bit. Am I indeed missing
>>>>> something?
>>>>>>
>>>>>>
>>>>>> I think that is the case indeed. Though I agree that it would be
>>>>> a nice
>>>>>> addition to Data.Typeable.
>>>>>
>>>>> This thread is a few months old now, but it looks like people were
>>>>> generally in favor of adding (gcast Refl) to Data.Typeable. I've
>>>>> used
>>>>> it in real code in at least one place since then (where I just
>>>>> defined
>>>>> it locally). It doesn't look like it's actually been added, though
>>>>> --
>>>>> is it planned to go into HEAD eventually?
>>>>>
>>>>> Shachaf
>>>>
>>>>
>>>>
>>>> Links:
>>>> ------
>>>> [1] https://github.com/ghc/packages-base/tree/data-proxy
>>>
>>> _______________________________________________
>>> Libraries mailing list
>>> Libraries at haskell.org
>>> http://www.haskell.org/mailman/listinfo/libraries
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/libraries/attachments/20130722/89119632/attachment.htm>
More information about the Libraries
mailing list