Maxximiliann
** (BadMapError) expected a map, got: #Function<7.126501267/1 in :erl_eval.expr/5>
Given:
data =
[nil, nil, nil, "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", nil]
iex(17)> :maps.filter(data, & !is_nil(&1))
** (BadMapError) expected a map, got: #Function<7.126501267/1 in :erl_eval.expr/5>
(stdlib 3.12.1) maps.erl:200: :maps.filter([nil, nil, nil, "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", nil], #Function<7.126501267/1 in :erl_eval.expr/5>)
Where is this #Function<7.126501267/1 coming from? I typically see this when using Stream but that’s not being used here. As far as I can see, all that’s being sent to :maps.filter is a simple list. What am I missing?
Marked As Solved
Maxximiliann
Given:
data =
%{a: nil, b: nil, c: nil, d: "DG2xFkPdDwKUoBkzGAhQtLpSGzfXLiCYPEzeKH2Ad24p", e: nil}
Solution:
:maps.filter(fn(_k, v) -> !is_nil(v) end, data)
Thank you and everyone else for your kindly assistance! 
Also Liked
idi527

:maps.filter probably expects the function as the first argument and data – second.
Try :maps.filter(& !is_nil(&1), data). Or since data in your case is not a map but a list, you can try Enum.filter(data, & !is_nil(&1)) or Enum.reject(data, &is_nil/1).
lpil
#Function<7.126501267/1 is & !is_nil(&1) 
idi527
:maps functions work on maps, not lists. When working with lists, I’d probably use Enum module.
NobbZ
That your passed in predicate is not of correct “shape”
The :maps.filter/2 expects the predicate to be of arity 2 and return a boolean:
Pred = fun((Key, Value) -> boolean())
In elixir this means roughly:
pred :: fun((key, value) -> boolean)







