[email protected]
[Top] [All Lists]

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

Subject: Re: [Haskell-cafe] Re: Distinct types in a list
From: Keith Sheppard
Date: Thu, 7 Jan 2010 15:26:51 -0500
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
<[email protected]> 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
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>



-- 
keithsheppard.name
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

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