[Haskell-beginners] data type design question

Markus Barenhoff alios at alios.org
Wed Jul 30 05:09:17 EDT 2008

I have written a parsec parser for reading a marshallaled dataformat.

The returned data structure is based on the following data type:

> data T = TString String
>        | TInt Integer
>        | TList [TorrentT]
>        | TDict [(TorrentT, TorrentT)]

I think TString and TInt are clear. The elements of a TList always have
the same "type" (same constructor). The TDict is a dictionary where the 
key is always a TString but the value can be of any of the other "types",
even in the same dictionary. F.e the key "foo" may map to a TInt while the
key "bar" maps to another TDict.

I'am not happy with this declaration, but I'am not sure how to express this

One haskell data type for each of the four and then using type classes?

Maybe something like this? :

> type TString = String
> type TInt = Integer
> type TList = TC t => [t]
> type TDict = (TC t) => [(TString, t)]

> class TC where ...

> instance TC TString 
> instance TC TInt
> instance TC TList
> instance TC TDict

Thnx for some inseperation!

Markus Barenhoff - Münster - Germany - Europe - Earth
e-mail: alios at alios.org - jabber: alios at jabber.ccc.de - icq: 27998346

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 479 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/beginners/attachments/20080730/41948879/attachment.bin

More information about the Beginners mailing list