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

Edmond Begumisa ebegumisa@REDACTED
Fri May 20 17:04:36 CEST 2011


> consider the needs of READERS in preference to WRITERS.

I found this statement nicely summed up the conflicting views on this  
thread. Very well put. And it puts the issue to rest IMO.

- Edmond -


On Fri, 20 May 2011 18:27:03 +1000, Richard O'Keefe <ok@REDACTED>  
wrote:

>
> On 19/05/2011, at 4:08 AM, Michael Turner wrote:
>
>> "Sorry, but Erlang doesn't *need* a better chance of survival."
>>
>> Now, wait, I'm really pretty sure that, less than a year ago, I saw  
>> both Peyton-Jones and Armstong in a video, speculating about the future  
>> of their respective favorite languages, and openly wondering what the  
>> long-term future held.
>
> And?  Haskell is booming.  They tried to avoid success and failed  
> miserably.
>
>> In the meantime, I haven't noticed a dramatic increase in the frequency  
>> of Erlang job postings, though perhaps it's gone up. However, a  
>> doubling would still leave the number small.
>
> That does not mean that Erlang is under threat.  Come to think of it, R  
> is booming
> also.  There are at least 81 mirrors of CRAN to handle the download  
> volumes.  How
> many R jobs do you see?
>>
>> "Changing core language features that are solid,..."
>>
>> Except that that what I proposes fixes a weak spot (among other  
>> things): failed syntactic consistency.
>
> No, it leaves the *weak* spot (the absence of names in funs) along
> and smashes the *strong* spot.
>>
>> "... well thought out ..."
>>
>> Except that Joe Armstrong has just admitted (on this thread, IIRC) that  
>> the reason for the inconsistency is that they just didn't think about  
>> it at the time...."
>
> If you mean when "funs" were introduced, that may be so.
> But the repeated function names were copied from languages where it *WAS*
> well thought out, rather like you probably would not fault someone for
> designing a programming language using [] for array subscripting.
>
>>
>> "... and non-harmful ..."
>>
>> Implying that what I suggest here IS harmful?
>
> Yes, it is
> It would seriously impair readability.
> It would break several code processing tools that I use.
> It would drastically impair the usefulness of every existing Erlang book.
>>
>> Actually not. No amount of education and experience will make repeating  
>> the function name with every clause a DRY issue, for those who find  
>> that repetition as more of an obstacle than otherwise.
>
> Remember always to consider the needs of READERS in preference to  
> WRITERS.
>
> Take Haskell, as an example.  One of the advantages of Haskell is that  
> the
> types of functions can be inferred from their bodies (as long as you  
> stick
> to the standard language and don't use the rank 2 extension GHC offers).
> Why then do most Haskell programmers recommend writing down function  
> types
> anyway, even though that violates DRY?
>
> Because although the type *is* implicit in the code, and the *compiler*
> can figure it out, that doesn't mean it's easy for *humans*.
>
> If you are one of the people who find repeating function names an  
> obstacle
> (on present evidence, a set of cardinality one),
>  - you don't have to use Erlang
>  - you can always write cases if you want
>  - you could look into LFE
>  - you could write your own preprocessor
>
>
>> No amount of education and experience will keep people from wondering,  
>> "Why this strange inconsistency?"
>
> As a matter of fact, I've known about Erlang since about a year (maybe  
> two) since the first paper
> on it.  Since well before it *had* funs, in fact.  And you know, I've  
> *never* had that thought.
> I don't experience any inconsistency.
>
>> oAnd better documentation and training will only make more people ask  
>> that question. I didn't ask that question until I *stumbled* on the  
>> extended syntax for funs; I didn't know about it before.
>
> "Extended syntax for funs?"  What's that?  The syntax of funs is  
> described in
> chapter 7 of the reference manual, the chapter on expressions, which is  
> exactly
> where you would expect to find it.
>
> The inconsistency I see is that functions are OK but funs
> (a) do not permit a visible function name
>     -- just like Haskell, Clean, SML, CAML, &c
> (b) begin with "fun" instead of just beginning
>     -- just like Haskell, Clean, SML, &c
> (c) end with "end" instead of ending with a "."
>     -- the other languages I mentioned do not have any
>     -- terminator, so I usually find myself having to
>     -- wrap them in parentheses.  It's quite nice not
>     -- having to do that.
>
> However, (b) and (c) are unsurprising because funs are
> *expressions* and normal function definitions are not.
>
> If you are that upset about (a), I suggest that the inconsistency
> should be resolved by allowing funs to have names, as I've suggested,
> because that would fix the *other* difference between funs and
> normal functions, which is that normal functions can be directly
> recursive, and funs cannot.
>
> Your proposal to add a definition style that I find horrible for
> normal functions fails to do anything about that *other* difference
> between functions and funs.
>
> I repeat, you are urging that a *strong* spot be smashed to make
> it consistent with a *weak* spot, which is quite the wrong way around.
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://erlang.org/mailman/listinfo/erlang-questions


-- 
Using Opera's revolutionary e-mail client: http://www.opera.com/mail/



More information about the erlang-questions mailing list