A DSSSL Function

    (define (node-list-filter-by-gi nodelist gilist)
      ;; Returns the node-list that contains every element of the original
      ;; nodelist whose gi is in gilist
      (let loop ((result (empty-node-list)) (nl nodelist))
        (if (node-list-empty? nl)
    	result
    	(if (member (gi (node-list-first nl)) gilist)
    	    (loop (node-list result (node-list-first nl))
    		  (node-list-rest nl))
    	    (loop result (node-list-rest nl))))))