How to define recursive anonymous function in Elixir?

f = fn
  ([], _fun) ->
    []
  ([h | t], fun) ->
    [h+1 | fun.(t, fun)]
  end

f.([1, 2, 3], f)