I am in the middle of studying the possibility of compiling a portion
of ATS into Erlang. If successful, this would allow us to use ATS+Erlang
for constructing distributed programs. Stay tuned 
Erlang is a very interesting language. No doubt about it. However, I really
felt Joe Armstrong went way too much overboard with his let-it-crash
"philosophy".
Why Crash?
Crashing immediately when something goes wrong is often a very good idea;
in fact, it has several advantages.
⢠We donât have to write defensive code to guard against errors; we just
crash.
HX: Well, who is going to save the state? After all, the physical world is
stateful. Itâs been that way since the big bang.
⢠We donât have to think about what to do; we just crash, and somebody
else will fix the error.
HX: Why would we believe this âsomebodyâ has the silver bullet we donât
have?
⢠We donât make matters worse by performing additional computations
after we know that things have gone wrong.
HX: Who says that performing additional computations is always harmful.
Does this mean that one should just kill oneself if one is ever cut by a
knife accidentally?
⢠We can get very good error diagnostics if we flag the first place where an
error occurs. Often continuing after an error has occurred leads to even
more errors and makes debugging even more difficult.
HX: I donât know about other people. I debugged a few Erlang programs, and
I could tell that it was not easy for me!
⢠When writing error recovery code, we donât need to bother about why
something crashed; we just need to concentrate on cleaning up afterward.
HX: So that we should just wait for the next crash? What about the wasted
time and energy?
It is often claimed that Erlang-based telephone services are so robust;
they are always
up; they are never down. I think that a much better measurement is the
number of calls that have
been dropped. Up/down is too qualitative.