[Haskell-cafe] Manual type-checking in graphs: Avoidable?
Gesh
gesh at gesh.uni.cx
Fri Feb 19 22:12:22 UTC 2016
On February 19, 2016 10:54:11 PM GMT+02:00, Francesco Ariis <fa-ml at ariis.it> wrote:
>hey Gesh,
>
>you are right (not able to compile it atm too, but it looks
>correct and way elegant).
>Maybe post it in the Ml to help OP?
>
>ciao ciao
>F
>
>
>On Fri, Feb 19, 2016 at 04:59:56PM +0200, Gesh wrote:
>> I'm away from compiler at the moment, but...
>> Shouldn't this work?
>> > {-# LANGUAGE GADTs #-}
>> > data NodeS = HamsterS | PersonS
>> > data NodeP a where
>> > Hamster :: String -> NodeP HamsterS
>> > Person :: String -> NodeP PersonS
>> > data Node = forall a. NodeP a
>> > type Graph = Gr Node...
>> > hamsters :: NodeP PersonS -> ...
>>
>> Basically the idea of that you reify the choice of constructor to the
>type level, permitting static restriction of the constructors used.
>>
>> HTH,
>> Gesh
Oops, meant to send to list.
More information about the Haskell-Cafe
mailing list