(bind-func BTree_walk_preorder:[void,BTree{!v}*,[void,!v]*]*
(lambda (tree fn)
(if (null? tree) null
(begin
(fn (tref tree 0))
(BTree_walk_preorder fn (BTree_left tree))
(BTree_walk_preorder fn (BTree_right tree))))))