upvote
That can be a concern indeed but it is worth noting that strong arrows compose/propagate. So if you have a function without guards that calls a function that guards on said types, the caller is also strong! We will likely have mechanisms to measure "strength" when we introduce type annotations.
reply
Is it fair to think of this as the ability for type information to be propagated in both directions, e.g. both up and down the callstack? So callees down the callstack may receive any type information the caller might have, while callers up the stack may also receive any information callees further down the stack might have? Please correct me if my understanding of what you wrote is way off base!
reply
That happens with a single module but not across modules because being able to hot code load modules is an essential ability in Erlang/Elixir.
reply
very cool. would be even cooler if you could disguise type annotations as dialyzer annotations :P
reply
I had to do this just the other day. I found it to be a minor papercut, but it was an easy fix.
reply