Scala, on the other hand, seems to strike more reasonable compromises on these points and has all the java stuff to draw on when you need it.
I don't understand how offering several choices is synonymous with inconsistent. If you really really want "consistency", establish a policy for your code and stick with it. All three have distinct uses, and each is better for certain things than for others.
Anyhow, there's nothing particularly special about the Maybe or Either monads; you should be able to easily implement either of those yourself, and calling them a feature of the language---beyond the fact that they happen to be in the standard library---is somewhat specious.
http://stackoverflow.com/questions/3077866/large-scale-desig...
Maybe and Either are both monads and by convention Left errCode is the fail method of the Either monad. This will work exactly as you think it should. It will also work with, e.g., io actions that might fail.
If Erlang is suffering, why has no-one written a better front end compiler with saner syntax or a static type system?
Strings:
Records are not real records, just compile time labels placed on top of tuples. The syntax, seriously, three different line terminators?Python and Haskell both make great go-to languages, and you can solve a wide variety of problems in them. Erlang is the language you suffer with when you truly need massive concurrency and distribution.