[Haskell-cafe] pattern match on forall'ed data

Ivan Lazar Miljenovic ivan.miljenovic at gmail.com
Wed Jul 20 21:21:54 UTC 2016


On 21 July 2016 at 02:30, Corentin Dupont <corentin.dupont at gmail.com> wrote:
> I see....
> The think is, I am interested to know if "e" is "Nothing", whatever the type
> of Nothing is!

Data.Maybe.isNothing ?

>
>
>
> On Wed, Jul 20, 2016 at 5:44 PM, Patrick Chilton <chpatrick at gmail.com>
> wrote:
>>
>> It's because you're doing === Nothing and the type of the Nothing is
>> ambiguous (Maybe a1).
>>
>> On Wed, Jul 20, 2016 at 5:18 PM, Corentin Dupont
>> <corentin.dupont at gmail.com> wrote:
>>>
>>> Hi all,
>>> I'm surprised this doesn't work:
>>>
>>> data SomeData = forall e. (Typeable e, Eq e) => SomeData e
>>>
>>> (===) :: (Typeable a, Typeable b, Eq a, Eq b) =>  a ->  b ->  Bool
>>> (===) x y = cast x == Just y
>>>
>>> test :: SomeData' ->  Bool
>>> test (SomeData' e) | e === Nothing = True
>>> test _ = False
>>>
>>> It says
>>>  Could not deduce (Eq a1) arising from a use of ‘===’
>>>
>>> How can I achieve something of the same effect?
>>>
>>> Thanks
>>> Corentin
>>>
>>> _______________________________________________
>>> Haskell-Cafe mailing list
>>> To (un)subscribe, modify options or view archives go to:
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>> Only members subscribed via the mailman list are allowed to post.
>>
>>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.



-- 
Ivan Lazar Miljenovic
Ivan.Miljenovic at gmail.com
http://IvanMiljenovic.wordpress.com


More information about the Haskell-Cafe mailing list