I am trying to create a function that takes two set objects and returns a new set object that is the intersection of those two objects while using an iterator.
Here are some functions that I used, basic-set1 and basic-set2 are set objects that are initially empty.
((basic-set1 'get-set))
>(d c b a)
((basic-set2 'get-set))
>(a b)
(define my-iterator3 basic-set1)
((my-iterator3 'next))
> d
((my-iterator3 'next))
> c
((my-iterator3 'hasnext))
> #t
My desired output
(intersection-sets basic-set1 basic-set2)
> (b a)
This is the code I have so far.
 (define (intersect-sets set1 set2)
  (define my-iterator3 ((set1 'get-iterator )))
  (define result (basic-set))
  (define (iter)
   (let ((x ((my-iterator3 'next))))
    (cond ((not ((my-iterator3 'hasnext))) result)
          (((set2 'element?) x)
          (begin ((result 'insert) x)
                 (iter)))
          (else
           (iter)))))             
  (iter))
Tested output:
(intersect-sets basic-set1 basic-set2)
>#<procedure:...Problem3.rkt:60:2
I'm kind of stumped. Any help would be appreciated.