def top_down_once(rule, fns=basic_fns):
 return do_one(rule, (lambda expr: sall(top_down(rule, fns), fns)(expr)))

def top_down_once ( rule , fns = basic_fns ) : return do_one ( rule , ( lambda expr : sall ( top_down ( rule , fns ) , fns ) ( expr ) ) )
apply a rule down a tree - stop on success .