The problem here is that Map.drop/2 expects a term as the second argument that implements the Enumerable protocol. This means that realistically we can't check for a specifically supported data type or types, since anything could implement the Enumerable protocol. For example, I might implement Enumerable for atoms and then your code would work.
On Sat, 12 Jan 2019 at 19:10, Edouard Mnd <[email protected]> wrote: > Hi, > > I have been running into the same issue again and again with elixir where > I get a weird error like > >> (Protocol.UndefinedError) protocol Enumerable not implemented for "foo". >> This protocol is implemented for: DBConnection.PrepareStream, DBCo >> nnection.Stream, Date.Range, Ecto.Adapters.SQL.Stream, File.Stream, >> Function, GenEvent.Stream, HashDict, HashSet, IO.Stream, List, Map, MapSet, >> Postgr ex.Stream, Range, Stream, StreamData, Timex.Interval >> > when doing `Map.drop(foo, :sth). > Obviously i'm doing something wrong : I should give a list as a second > argument but I keep forgetting and I bet i'm not the only one. > My proposal would consist in handling this case explicitly either by > allowing for such a case to work or giving back a clear error message such > as "Are you trying to do Map.drop(foo,[:sth]) ?". > I'm greatly inspired by the rust language in asking this, indeed rust > gives you really great error messages when doing silly things. > > I hope you find my proposal clear and interesting as it clearly is not > just about Map.drop but also about giving better error messages to the > developer when doing silly things which I think is important. > > -- > You received this message because you are subscribed to the Google Groups > "elixir-lang-core" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/elixir-lang-core/550f8801-c0d9-41ea-947a-8c3ee483c76a%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/550f8801-c0d9-41ea-947a-8c3ee483c76a%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- Andrea Leopardi [email protected] -- You received this message because you are subscribed to the Google Groups "elixir-lang-core" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAM9Rf%2B%2BuAZPBak5AuAdo-87iF7a8ytUpX_r8wkbhAoMLBO%2Bu5g%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
