Ciao, from inspection of 'scm_markstream()' and 'scm_gc_mark_dependencies()' in I guess that: the mark function of a port driver is invoked again and again until it returns SCM_BOOL_F; in the sequence of invocations it must return the next SCM value until all of the values stored in the client data (stream field of scm_t_port) have been returned once.
So it is the business of the mark function to implement an iterator over all the SCM values, keeping the iterator state in the client data structure itself. But, it is my understanding that the mark function is invoked with a single parameter, which: the first time is the value in the 'stream' field and subsequent times is the SCM value of the previous invocation. So: is it mandatory to organise SCM values in the client data in a list and write the mark function to return the cons cells? That is the at the first invocation of the mark function we return the first cell and at subsequent invocations we return the cdr? -- Marco Maggi "They say jump!, you say how high?" Rage Against the Machine - "Bullet in the Head" _______________________________________________ Guile-user mailing list Guile-user@gnu.org http://lists.gnu.org/mailman/listinfo/guile-user