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 -----