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

Christian Maeder Christian.Maeder at dfki.de
Thu Jan 7 14:02:15 EST 2010

You could cast your parser result "a" to Dynamic using
Data.Dynamic.toDyn (and derive Typeable instances for all involved types).


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. 

More information about the Haskell-Cafe mailing list