[Haskell-cafe] Re: Distinct types in a list

Bulat Ziganshin bulat.ziganshin at gmail.com
Thu Jan 7 15:45:55 EST 2010


Hello Keith,

Thursday, January 7, 2010, 11:26:51 PM, you wrote:

existential types has more limited usage compared to dynamics, but in
the cases they work they allow to have compile-time type-checking
instead of run-time one

> Hello, My impression is that using existential types where possible
> will result in more complete type checking than Data.Dynamic but I'm
> not sure since I haven't yet tried Data.Dynamic in my own code. Can
> someone confirm if this is right?

> Best
> Keith

> On Thu, Jan 7, 2010 at 2:02 PM, Christian Maeder
> <Christian.Maeder at dfki.de> wrote:
>> You could cast your parser result "a" to Dynamic using
>> Data.Dynamic.toDyn (and derive Typeable instances for all involved types).
>>
>> http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.2.0.0/Data-Dynamic.html
>>
>> Using an existential types may be another alternative.
>>
>> Cheers Christian
>>
>> rodrigo.bonifacio schrieb:
>>> Hi all,
>>>
>>> I have a family of parsers that return either (Success t) or (Fail), using the following data type:
>>>
>>>> data ParserResult a = Success a | Fail String
>>>>  deriving (Read, Show, Eq, Ord)
>>>>
>>>> isSuccess (Success _) = True
>>>> isSuccess (Fail _) = False
>>>> ...
>>>
>>> I want to add the results of different parsers to a list. Such as:
>>>
>>>> m1 = parseFirstModel file1   -- it returns a ParserResult of t1
>>>> m2 = parseSecondModel file2  -- it returns a ParserResult of t2
>>>
>>>> ps = [m1, m2]
>>>
>>> In such a way that I could write something like:
>>>
>>>> if and (map isSuccess ps)
>>>>  then process m1 m2
>>>>  else ...
>>>
>>> Actually, in the real program I have to check more than two input models. However, since Lists do only hold elements of a same type, I couldn't proceed in this way. Which improvements to the ParserResult data type should I wrote in order to proceed as I want to.
>>>
>>> Best regards,
>>>
>>> Rodrigo.
>>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>






-- 
Best regards,
 Bulat                            mailto:Bulat.Ziganshin at gmail.com



More information about the Haskell-Cafe mailing list