前々から ML では話題になってたんですが、Vim 7.4.2044 ついに Vim script に lambda が実装されました!!
実装されたのは2〜3日前なんですが体調が死んでたのでブログかけなかった
Vim script の lambda は { 引数 -> 式 }
という風に定義します。
詳しくは :help expr-lambda@en
を参照してください。
let Plus = { a, b -> a + b } echo Plus(1, 2) " => 3 let F = { -> "homu"} echo F() " => "homu" echo map([1, 2, 3], {idx, val -> val + 1}) " => [2, 3, 4]
最初は execute()
みたいに lambda("式を文字列で定義")
みたいな感じの組み込み関数で実装するのかと思っていましたが、結構しっかりとした構文で実装されたのでちょっと驚きました。
文字列の場合はいろいろと使い勝手が悪いと思っていたので(文字列内で正規表現を定義したりとか)こっちの構文の方が割と好みです。
まあ式しか定義できないのはちょっと不便そうな部分はありますが。
とはいえ、まだ実装されたばかりなので不具合とかもあると思うのでガッツリと使う分にはもう少し様子を見たほうがいいかも知れませんね。
しかし、思ったよりも使い勝手がよさそうな構文なので早く使ってみたいです。