Arc Forumnew | comments | leaders | submitlogin
3 points by cthammett 3292 days ago | link | parent

  ;tree-leaves function for modifying leaves with plug-in test
  (def t-l%% (tree test result)
    (if tree
      (if (alist tree)
        (cons
          (t-l%% (car tree) test result)
          (t-l%% (cdr tree) test result))
        (if (test tree)
          (result tree)
        tree))))

  ;Modified akkartik's solution
  (mac t-l (tree test result)
    `(t-l%% ,tree 
      (fn (x) ,test) 
      (fn (x) ,result)))

  ;Using the following input
  (t-l `(1 2 (3 4 (5 6))) (and (number x) (even x)) 'even-number)

  ;Results
  (1 even-number (3 even-number (5 even-number)))