On 13.12.2020 08:06, Taylan Kammer wrote:
(define find-in-tree* (λ (peg-tree filter-proc) (define traverse (λ (subtree rest) (simple-format (current-output-port) "working with subtree ~a\n" subtree) (cond [(null? subtree) (if (null? rest) '() (traverse (car rest) (cdr rest))] [(pair? (first subtree)) (traverse (first subtree) (cons (cdr subtree) rest))] [(filter-proc (first subtree)) (cons subtree (traverse (car rest) (cdr rest)))] [else (traverse (cdr subtree) rest)]))) (traverse peg-tree '())))
Correction, for third branch of the cond that didn't check if rest is null: (define find-in-tree* (λ (peg-tree filter-proc) (define traverse (λ (subtree rest) (simple-format (current-output-port) "working with subtree ~a\n" subtree) (cond [(null? subtree) (if (null? rest) '() (traverse (car rest) (cdr rest)))] [(pair? (first subtree)) (traverse (first subtree) (cons (cdr subtree) rest))] [(filter-proc (first subtree)) (cons subtree (if (null? rest) '() (traverse (car rest) (cdr rest))))] [else (traverse (cdr subtree) rest)]))) (traverse peg-tree '()))) Taylan