(define-module (language python list) #:use-module (oop pf-objects) #:use-module (oop goops) #:use-module (language python yield) #:use-module (language python for) #:use-module (language python exceptions) #:export (to-list)) (define-method (to-list x) (if (vector? x) (vector->list x) x)) (define-method (to-list (x

)) ((ref x '__tolist__ (lambda () (error "missing __tolist__ in object"))))) (define-method (to-list (x )) (define l '()) (catch StopIteration (lambda () (let lp () (set! l (cons (next x) l)) (lp))) (lambda x (reverse l))))