
Hi, 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 better. 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 -- Markus Barenhoff - Münster - Germany - Europe - Earth e-mail: alios@alios.org - jabber: alios@jabber.ccc.de - icq: 27998346