On 2004 July 06 Tuesday 05:35, Graham Klyne wrote:
> When I'm designing datatypes for a Haskell program, I sometimes seem to end
> up with a slightly incoherent mixture of algebraic types and
> constructors. 

> example 

> data Event = Document DocURI Element
>             | Element Name BaseURI Language Children Attributes LiIndex
>             | Subject EndElement
>             | Attribute Name AttributeVal
>             | Text TextVal

At first I was going to say that I would _never_ feel the need to turn a set 
of constructors into a set of types. But looking again at your example 
constructors I grasp what you mean by "incoherent".  In such cases, what may 
help is to consider why such disparate entities would be grouped together.  

It is not uncommon that the reason is that they all are processed by one or a 
few functions. Then you can consider making those functions into a class.  
Whether this is desirable depends on whether splitting up the implementation 
of the original functions, reorganized by "type", makes the program more 
modular.
_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to