[erlang-questions] some language changes

ok <>
Tue Jun 5 03:26:57 CEST 2007


On 5 Jun 2007, at 9:31 am, Kostis Sagonas wrote:
> Of course we are approaching issues of taste here, but something like
>
>    foo(A) ->
>       let B =
>          let
> 	   A = A + 1
>          in
> 	   bar(A)
>          end,
>       in
>          baz(A, B)
>       end.
>
> is obviously considerably more verbose, but not necessarily harder (to
> write or understand) than:
>
>    foo(A) ->
>       A1 = A + 1,
>       B = bar(A1),
>       baz(A1, B).

I presume this was written with tongue in cheek, because the
two are NOT equivalent.  The first version is equivalent to
	foo(A) -> baz(A, bar(A+1)).
the second version is equivalent to
	foo(A) -> A1 = A+1, baz(A1, bar(A1)).
If the two versions were supposed to be equivalent, then Kostas has
clearly demonstrated that a version that re-uses a variable name IS
harder to write correctly than what we have now.

For what it's worth, in my experimental "Haskell-ish" syntax for Erlang
these examples would be

	foo A =
	    let B = (let A = A + 1 in bar A)
	     in baz A B

and
	foo A =
	    let A1 = A + 1,
                 B  = bar A1
              in baz A1 B

respectively.  (And no, this is NOT indentation-based syntax.)



More information about the erlang-questions mailing list