# $Id$

class resource(object):

  def __init__(self, car, cdr):
    self.car = car
    self.cdr = cdr

  def __str__(self):
    return "(" + str(self.car) + " . " + str(self.cdr) + ")"

  def __eq__(self, other):
    return self.car == other.car and self.cdr == other.cdr

  def __hash__(self):
    return self.car.__hash__() + self.cdr.__hash__()

class resource_set(set):

  def __init__(self, *elts):
    for e in elts:
      assert isinstance(e, resource)
    set.__init__(self, elts)

  def __str__(self):
    return "(" + " ".join(map(str, self)) + ")"

s = resource_set(resource("a", "b"), resource("c", "d"), resource("a", "b"))

print s

print len(s)

for i in s:
  print i