On 19-Feb-09, at 11:49 PM, Marc Feeley wrote:
Seriously though the size (of the expanded source) comes down by a factor of 5 when inlining is disabled, with no loss in speed. There is just a slight saving in code space. Go figure! The change is now in the repository.
The pretty-printing algorithm is also to blame. I have now implemented an algorithm which slides a window left and right as the nesting increases/decreases.
In the case of digest.scm this brings down the size of the pretty- printed expansion by a factor of 7.
The patch has been committed to the repository.
Below are a few examples.
Marc
% gsi -e "(define (f n) (if (> n 0) (list 'aaaaa 'bbbbb (f (- n 1)) 'ccccc 'ddddd) 'end))(pp (f 10))" (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb ;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< end ccccc ddddd) ccccc ddddd) ccccc ddddd) ;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ccccc ddddd) ccccc ddddd) ccccc ddddd) ccccc ddddd) ccccc ddddd) ccccc ddddd) ccccc ddddd)
% gsi -e "(define (f n) (if (> n 0) (list 'aaaaa 'bbbbb (f (- n 1))) 'end))(pp (f 20))" (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb ;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb ;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb (aaaaa bbbbb
end))))))))))))))))))))