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?
: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).