可変長引数を可変長関数へ渡す

call 使えば簡単に行えました。
a:000 で、可変長引数のリストが取得できるのがイイネ。

[ソース]

function! s:apply(func, ...)
    return call(a:func, a:000)
endfunction

function! s:print(...)
    for var in a:000
        echo var
    endfor
endfunction

function! s:sum(...)
    let l:sum = 0
    for var in a:000
        let l:sum += var
    endfor
    return l:sum
endfunction

call s:apply("s:print", 0, "hoge", "foo")
echo s:apply("s:sum",   2, 3, 6, 1)

[出力]

0
hoge
foo
12