[erlang-questions] Orthogonality and Principle of least surprise Was: chained functions

Jesper Louis Andersen jesper.louis.andersen@REDACTED
Mon Feb 6 17:24:43 CET 2012

On 2/1/12 9:05 AM, Jakob Praher wrote:
> Hi Erlangers,
> I think people should pay attention to issues faced by experienced newcomers in exercising Erlang programming. Matz from Ruby calls a ver important design principle, the principle of least surprise.
This is a good principle, but Ruby does not heed it:


My personal favorite is this simple one:

def a
   + 7


def b
   7 +

The a function returns 7 because the first 7 is produced as a side 
effect and the line '+ 7' evaluates to 7. The b function on the other 
hand produces an incomplete expression with 7 + and then adds 7 to it, 
returning 14 as you would expect. Note that in Erlang, where the grammar 
is more well-defined, there is no such distinction (note though that 
this is Ruby 1.8.7 - it may have been fixed in later ruby versions).

That is the reason for the prefixed 'fun' in Erlang: It makes the 
grammar unambiguous, like Richard O'Keefe mention - such that things 
like the above cannot occur.

Jesper Louis Andersen
   Erlang Solutions Ltd., Copenhagen, DK

More information about the erlang-questions mailing list