" Vim lambda expressions let expr = 42 let Foo = {-> expr} let Foo = {_ -> expr} let Foo = {... -> expr} let Foo = {x -> expr} let Foo = {x, _ -> expr} let Foo = {x, ... -> expr} let Foo = {x, y -> expr} " line continuations let Foo = {-> "\ comment \ expr \ } let Foo = {_ -> "\ comment \ expr \ } let Foo = {... -> "\ comment \ expr \ } let Foo = {x -> \ expr "\ comment \ } let Foo = {x, y -> "\ comment \ expr \ } let Foo = { \ -> "\ comment \ expr \ } let Foo = {x \ -> "\ comment \ expr \ } let Foo = {x, y \ -> "\ comment \ expr \ } let Foo = {x, \ y, \ z -> expr} let Foo = { \ x, \ y, \ z \ -> "\ comment \ expr \ } let Foo = {-> [ \ 42, \ 83 \]} let Foo = {-> { \ 'a': 42, \ 'b': 83 \}} let Foo = {-> #{ \ a: 42, \ b: 83 \}} let Foo = {-> {->[ \ 42, \ 83 \]}} let Foo = {-> {-> { \ 'a': 42, \ 'b': 83 \}}} let Foo = {-> {-> #{ \ a: 42, \ b: 83 \}}} " :help lambda :let F = {arg1, arg2 -> arg1 - arg2} :echo F(5, 2) :let F = {-> 'error function'} :echo F('ignored') :function Foo(arg) : let i = 3 : return {x -> x + i - a:arg} :endfunction :let Bar = Foo(4) :echo Bar(6) :echo map([1, 2, 3], {idx, val -> val + 1}) " [2, 3, 4] :echo sort([3,7,2,1,4], {a, b -> a - b}) " [1, 2, 3, 4, 7] :let timer = timer_start(500, \ {-> execute("echo 'Handler called'", "")}, \ {'repeat': 3})