If I understand what you are saying, you seem to be unclear why so much “reusability” seems to revolve around Behaviors instead of functions.
Read Chapter 3. Behaviors on Google’s sample.
Processes interact through messages, not function invocations therefore process skeletons are implemented as Behaviors.
- OTP design principles
- Learn You Some Erlang: What is OTP
- [style] Parametrising generic functionality: behaviours vs protocols
- Why is Access a behaviour instead of a Protocol? When to use a Protocol instead of a Behaviour?
- Difference between protocol & behaviour in elixir
- Mox and Protocols?