Hey folks!
I was prompted down this mode of thinking after answering some questions related to why `:ets` was returning argument error. Turns out they hadn't included the `[:named_table]` option. However the error message gave them exactly zero help when it comes to figuring out what is wrong.
`:crypto` is another good example where any number of things can go wrong, and all will result in the same generic argument error.
There's really two questions here:
1) Is it worth wrapping something like :ets or :crypto with an elixir module that could improve error messages?
2) Does this particular implementation idea I have sound reasonable?
I split it up this way of course because while #2 may be a bad idea, I don't want rejection of #2 to imply rejection of #1.
## Implementation notion.
By way of example, let's tackle that :ets problem
Ets.new returns %Ets{opts: [:named_table], ets_id: 123987}
defmodule Ets do
end