[email protected]
[Top] [All Lists]

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

Subject: [Haskell-cafe] Re: Distinct types in a list
From: Christian Maeder
Date: Thu, 07 Jan 2010 20:02:15 +0100
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. 
Haskell-Cafe mailing list
[email protected]

<Prev in Thread] Current Thread [Next in Thread>