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

Reply via email to