Thanks everyone for the feedback.
For now, we will go with extending defguard/1
(discussion #2) and adding the is_struct
and is_exception
guards. For the remaining ones, we will wait until more use cases arrive, if ever.
Note though those enhancements will take a while to arrive, since they require Erlang/OTP 21, and the first Elixir release that will support exclusively Erlang/OTP 21+ is likely 1.10, which is about 1.5 years from now.
You can track Erlang/OTP 21 support in the issues tracker: https://github.com/elixir-lang/elixir/issues/6611