News for hackers. Stuff that matters.
Re:Erlang/OTP by Example by elcritch on Sunday October 21, 2018 @08:39PM (#18271272)
Wow, thanks! I’ve kept up with your project and greatful for the work.

Out of curiosity, have you seen anything in Dialyzer for dealing with typing GenServer messages and handlers? I haven’t figured out a way to spec message handlers as dialyzer seems to only check that you have any `handle_cast` implemented and adding a behavior doesn’t compose. Given the key role GenServer plays in OTP, it’s a big lack IMHO. I’ve wondered if the new named guards in Elixir could help with it somehow.

Re:Erlang/OTP by Example by _asummers on Monday October 22, 2018 @12:48AM (#18272247)
Nah because as soon as you deviate from the GenServer behaviour you'll get errors from not matching the @callback. The trick there is to provide a narrower API that calls into the GenServer functions with the proper @spec and treat the handle_cast and friends as private functions that you don't call directly. So like a pop/0 might call cast(:pop) and you'd have the associated handle_cast for :pop.
Re:Erlang/OTP by Example by elcritch on Monday October 22, 2018 @01:36AM (#18272428)
Yah, that's the error I ran into. Creating function wrappers to send messages works well for client api's. However, it doesn't help verify that you've implemented the `handle_cast` properly or dealing with messages from other places. Normally it's not to big of an issue.
Re:Erlang/OTP by Example by _asummers on Monday October 22, 2018 @07:56AM (#18273896)
Yeah ideally those APIs are well scoped enough to be able to unit test them, but I agree there's some piece missing there.