Hi, > In similar situations, especially if there is more than one useful way to > use the various parts of an algorithm, I used often prefer existentials: > > data Model = forall markup table alignments. Model > { > prepareData :: Data () -> Data markup, > initialize :: Data markup -> ST s table, > doThingOne :: Data markup -> table -> ST s alignments, > doThingTwo :: Data markup -> alignments -> ST s table, > getResults :: Data markup -> table -> alignments -> String > }
I like this a lot! The only problem is I don't think GHC does. It complains: /nfs/isd/hdaume/projects/MESumm/new/Model.hs:13: Can't combine named fields with locally-quantified type variables In the declaration of data constructor Model In the data type declaration for `Model' .... _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell