Vim Script で、fold 書いてみた

実装自体はそんなに難しくない。
需要があるかは分からない。

[ソース]

function! s:fold(list, state, forwardOp)
    let l:op = a:state
    for value in a:list
        let l:op = a:forwardOp(l:op, value)
    endfor
    return l:op
endfunction

function! s:plus(a, b)
    return a:a + a:b
endfunction

    return a:a - a:b
endfunction

echo s:fold([2, 3, 4], 1, function("s:plus"))
echo s:fold([2, 3, 4], 1, function("s:minus"))

[出力]

10
-8

function("s:plus") の辺りがちょっと助長な気がする。
辞書型で関数定義して、それを渡した方がいいかしら。