Wed Mar 20 12:56:43 EDT 2019
You need both dynamic and static typing, because in any project there
is going to be a "phase boundary", where there are no guarantees about
what data you are going to receive, so there is non-totality as a
property of the real world.
How you deal with that is up to you. Sometimes it makes sense to keep
the non-totality around, and only have a small core with (near)
( Totality as in total functions: no chance on any run time exceptions. )
Erlang's stance is: you ain't going to get the protocols right in all
details, covering all corner cases, so just make sure you can limit
state loss by making restarts very granular.