Thank you to Arjan and Koen.
The solution proposed is:

  class ResourcePool p where
    newp :: p e -> e -> p e
or in Arjan's notation:

  newp :: poolOf elem -> elem -> poolOf elem

This looks like it will solve my problem.


----- Begin Included Message -----

Comments: ( Received on ftpbox.mot.com from client animal.cs.chalmers.se, sender 
[EMAIL PROTECTED] )
X-Authentication-Warning: muppet23.cs.chalmers.se: koen owned process doing -bs
Date: Mon, 8 Jun 1998 18:51:41 +0200 (MET DST)
From: Koen Claessen <[EMAIL PROTECTED]>
To: Peter White <[EMAIL PROTECTED]>
cc: [EMAIL PROTECTED]
Subject: Re: classes and instances
MIME-Version: 1.0

On Mon, 8 Jun 1998, Peter White wrote:

 | What I really want is to define a pool of reusable resources. So
 | I want a class declaration something like:
 | 
 | class ResourcePool p where
 |     newp :: p -> e -> p -- adds new element e to the resource pool p

Don't you want to use constructor classes? Presumably, the type `p' will
have only one associated `e' with it, which can be expressed as a
parameter to `p'.

  class ResourcePool p where
    newp :: p e -> e -> p e

Hope this helps,
Koen.

--
Koen Claessen,
[EMAIL PROTECTED],
http://www.cs.chalmers.se/~koen,
Chalmers University of Technology.



----- End Included Message -----


Reply via email to