# compute assoc of free vars in the expression and print it traversal freevars($set) from Exp to Var for Derived only t,e do initialize: %$set = (); Var.post: $set->{$self->{s}}++; Lambda.post: delete $set->{$self->{var}}; finalize: my ($x); foreach $x (keys %$set) { print "free variable: $x\n"; } endtraversal my ($v1,$v2,$comb,$lam1); $v1 = new Var (s => 'v1'); $v2 = new Var (s => 'v2'); $comb = new Comb (l => $v1, r => $v2, comb_flag => 0); $lam1 = new Lambda (var => 'v1', body => $comb); $lam1->display(\*STDOUT); $lam1->freevars({});