Vim の function() にコマンドを渡したかった

call function(":echo")(42)

みたいな事ができると便利じゃないですかね!

[やってみた]

function! s:funccmd(cmd)
    let func = { "cmd" : a:cmd }
    function! func.call(...)
        execute self.cmd . " " . join(map(copy(a:000), "string(v:val)"))
    endfunction
    return function(func.call, func)
endfunction

call s:funccmd("echo")(42)
" => 42
call s:funccmd("echo")("homu", 14)
" => homu 14

function() 本当に使い勝手がよくなったよなあ…。