[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).

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
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

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