[erlang-questions] DRY principle and the syntax inconsistency in fun vs. vanilla functions

Parnell Springmeyer <>
Wed May 18 17:11:27 CEST 2011

Hash: SHA1

You're being pedantic dude. I'm sure Joe Armstrong and the other
programmers that designed and work on Erlang are acutely aware of DRY,
PoLS, and a whole bunch of others.

Personally, I think it is a feature to state the function name when
defining another function clause.

    some_func(X, Y) ->
        %% Long bit of code
    some_func(X, []) ->
        %% More code

Without it, scanning the source could get confusing.

Michael Turner <> writes:

> I can say
>    fun (1)->2;
>         (2)->1
>    end
> but, oddly, I can't define a named function in the analogous way, e.g.:
>    factorial
>      (1) -> 1;
>      (N) -> N*factorial(N-1).
> gives me a syntax error. I find the latter more readable than
>    factorial(1) -> 1;
>    factorial(2) -> N*fact(N-1).
> It's also less to type and to read, which is consistent with the DRY
> principle ("Don't Repeat Yourself").  And it lends itself to reading a
> function definition as a set of cases. I think for Erlang newbies, it
> should therefore would be preferred: it helps underscore the
> pattern-matching style of Erlang function invocation.
> It also looks a *little* bit more like the mathematical convention for
> defining these sorts of functions, where you have "f(x) = ", centered
> vertically to the left of a big left "{" that (left-)encloses the list
> of expression/parameter-condition pairs in a two-column format, e.g.,
>  http://cnx.org/content/m29517/latest/Picture%2047.png
> So there's a (weak) argument from the Principle of Least Surprise here
> as well.
> It seems to me that, if anything, this requires only a *simplification*
> of the Erlang parser. That leaves only one obvious objection: would any
> existing code break if Erlang syntax were altered to allow this?
> -michael turner
> _______________________________________________
> erlang-questions mailing list
> http://erlang.org/mailman/listinfo/erlang-questions

- -- 
Parnell "ixmatus" Springmeyer (http://ixmat.us)
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org


More information about the erlang-questions mailing list