Can we simplify Dynamic?

Edward Kmett ekmett at gmail.com
Tue Sep 29 15:52:32 UTC 2015


It seems to be a fairly popular proposal. =)

https://mail.haskell.org/pipermail/libraries/2014-August/023633.html

-Edward

On Mon, Sep 28, 2015 at 6:03 PM, Roman Cheplyaka <roma at ro-che.info> wrote:

> I suggested this last year, see this thread
> https://mail.haskell.org/pipermail/libraries/2014-March/022287.html
>
> On 09/29/2015 12:51 AM, David Feuer wrote:
> > Currently,
> >
> > data Dynamic = Dynamic TypeRep Obj
> >                deriving Typeable
> > where
> > type Obj = Any
> >
> > As a result, all of the operations must be implemented "by hand" using
> > unsafeCoerce. The more obvious representation these days would seem to be
> >
> > data Dynamic where
> >   Dynamic :: Typeable a => a -> Dynamic
> >
> > Most of the operations then become trivial applications of Typeable
> > functions.    The only exceptions seem to be  dynApply and dynApp. That
> > there are exceptions strikes me as quite unfortunate. The easiest fix is
> > inspired by the fact that Data.Dynamic uses
> >
> > funResultTy :: TypeRep -> TypeRep -> Maybe TypeRep
> >
> > from Data.Typeable to decide whether to coerce. It seems reasonable to
> > add a more informative version, something like
> >
> > applyTypeable :: (Typeable f, Typeable a) =>
> >    proxy f ->
> >    proxy a ->
> >    (forall b . (Typeable b, f ~ (a -> b)) => r) ->
> >    Maybe r
> >
> > On the other hand, it would be really cool if there were some more
> > general way to get type-level information out of Typeable instances,
> > pattern matching on the type constructors.
>
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/libraries/attachments/20150929/8f42a0b9/attachment.html>


More information about the Libraries mailing list