Wed Mar 20 12:56:43 EDT 2019

Phase boundaries

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)
perfect totality.

( 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.