News for hackers. Stuff that matters.
Re:Erlang/OTP by Example by _asummers on Sunday October 21, 2018 @02:45PM (#18269443)
> Elixir is overall a syntax that works well for me, at least as well as Rust’s. The Elixir team have made great strides in providing good compiler error messages, and are actively improving the distribution/ packaging story. Hex and mix are fantastic, and on par with what I’ve use in cargo.

I'm working on making the dialyzer error messages better, too, in Dialyxir[0] and Erlex[1] =).

[0] https://github.com/jeremyjh/dialyxir [1] https://github.com/asummers/erlex

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.