RETRO does not provide local variables. Similar functionality can be achieved using globals along with the v:preserve combinator, but this can lead to ugly code.
Consider:
'Counter var :average (...n-v) &Counter [ #0 !Counter [ + &Counter v:inc ] times @Counter / ] v:preserve ; :run-tests #0 !Counter #1 #2 #3 #4 #3 average n:put nl &Counter v:inc #10 #20 #30 #40 #3 average n:put nl &Counter v:inc #11 #21 #31 #41 #3 average n:put nl &Counter v:inc @Counter n:put sp '_tests_finished s:put nl ;
run-tests
The code implemented here allows for wrapping the most recent word within a v:preserve clause, letting the above definition of test become:
:average (...n-v) #0 !Counter [ + &Counter v:inc ] times @Counter / ; &Counter make-local
And if you need multiple variables to be localized:
:average ... ; { &Array &Of &Variables } locals