guile-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Writing a procedure in different style


From: Taylan Kammer
Subject: Re: Writing a procedure in different style
Date: Sun, 13 Dec 2020 12:51:46 +0100
User-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.5.1

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

[Prev in Thread] Current Thread [Next in Thread]