reti.vim でクロージャ

簡単に。

[ソース]

function! s:make_counter()
	let n = 0
	return reti#execute("let n += 1 | return n", l:)
endfunction

let s:counter = s:make_counter()
echo s:counter()
" => 1
echo s:counter()
" => 2
echo s:counter()
" => 3
echo s:counter()
" => 4


関数の参照が大文字から始まらなければならないのと処理を文字列で定義する必要があるので、複雑な処理を書く場合は不向きかなぁ。