+1 on existing names

On Mon, 10 Nov 2008 09:50:12 -0500
Rich Hickey <[EMAIL PROTECTED]> wrote:

> 
> 
> On Nov 10, 2008, at 8:48 AM, Robert Lally wrote:
> 
> > One of the many things that I really like about Clojure is that it  
> > abandoned Lisp tradition where it was pragmatic to do so. One of
> > the prime examples for me was the use of first and rest rather than
> > car and cdr. Sure, I can read code with car and cdr but it never
> > really communicated that well; I always had to go through a
> > translation step in my head.
> 
> It's important to note right away that car and cdr aren't  
> abbreviations for anything more meaningful than car and cdr.
> 
> > With this in mind it surprises me ( and disappoints a little )
> > that there are still abbreviated function names in many places  -
> > aget, aset, assoc, conj, coll?, comp, and so on. Is there any need
> > for this in the 21st century?
> 
> I think so, but I understand this is somewhat subjective. It is
> useful to look at the 'competition' here (from random other
> languages):
> 
> array-get ->   []
> associate ->   put
> conjoin ->   add
> compose ->   .
> 
> I don't see people coming from a language where array access is []  
> feeling good about the verbosity of array-get.
> 
> put and add have imperative connotations that don't fit what assoc
> and conj do, so using them would only confuse people more.
> 
> > The trade off between meaningful method names and number of  
> > characters typed doesn't seem to be a good one from my
> > perspective; particularly as IDE support matures and you will only
> > need to type 'asso' to have the IDE expand the function name to
> > 'associate' for you.
> 
> IDEs can be great, but having to rely on them is a real problem.  
> People stumble over Lisps due to editors without adequate paren  
> matching, and if my experience with Clojure users is a guide, people  
> tend to try to stick with the editor they already know, leaving them  
> waiting for specific language support. Adding completion to the  
> 'things your editor must do before you can write Clojure
> effectively' sets a high bar.
> 
> > Using full words as function names leads to more readable code ..  
> > which can only be a good thing.
> 
> They do only to a point, and then the code gets larger and harder to  
> scan, lines spill etc.
> 
> > I'm not suggesting that terseness is bad, merely that I don't  
> > believe the trade off is worth it in this case. I've shown Clojure  
> > to a number of people and the Lisp derived syntax coupled with  
> > abridged names makes it harder for people to comprehend, makes it  
> > less likely that on first encountering a piece of Clojure code
> > that they'll be able to understand it, and so make it less likely
> > that I'll get to write Clojure for a living ... which makes me sad.
> 
> Well, people have to learn something new when they approach a new  
> language. I'm not sure associate or conjoin would be more readily  
> understood without some background on persistent immutable data  
> structures. But at least it's not a lot of arbitrary syntax and  
> associativity rules, and most of the short names are true  
> abbreviations. Short names are one way Clojure can compete for
> brevity with languages that get their brevity from syntax. IMO, it's
> more approachable than Haskell, Erlang, Scala or any of the ML
> variants.
> 
> array-get, associate, conjoin and compose etc are all still
> available. I wonder - would people use them if they were provided as
> aliases? I know I wouldn't.  The vocabulary of seqs and collections
> is so small. While I appreciate the approachability argument, a
> language is ultimately for its practitioners. I imagine there are
> those that wish assoc/conj/apply et al were even shorter, or
> dedicated symbols...
> 
> Since I don't hear this argument too often, I image Clojure is  
> striking an acceptable balance. What does everyone else think?
> 
> Rich
> 
> 
> > 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To post to this group, send email to clojure@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/clojure?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to