On May 26, 2013, at 5:47 AM, "Alex L." <[email protected]> wrote:
> First, the use of seq as a
> terminating condition is the idiomatic way to test whether a sequence is
> empty.
In natural languages, idioms change. Sometimes it's to the despair of purists:
for example, I've had to accept that "hopefully" at the beginning of a sentence
doesn't act as an adverb:
Hopefully, he will ascend to a higher plane.
Having consumed the HOPE1 drug, he will hopefully ascend to a higher plane.
The same is true of programming languages. When I was programming on the
PDP-11, it was idiomatic to use pre-increment instead of post-increment when
either would do:
for (i=0; i<N; ++i) … /* right */
for (i=0; i<N; i++) … /* wrong */
That was because the former compiled into one machine language instruction, but
the latter required two. PDP-11s were slow, so it could matter.
There exists in 2013 a person who, in a code review, insists that every
post-increment be changed to a pre-increment, even though (1) compilers are way
smarter than they were in 1981, (2) computers are way faster too, and (3)
insisting on a stylistic point only relevant in the distant past is the sign of
a mind past its sell-by date. I've met that person.
There is no one who understands `(if (seq thing)` who wouldn't understand
`(if (not (empty? thing))` or, better, `(if (not-empty? thing)`. The converse
is not true. That suggests that the latter should be the idiom, given that the
difference between them is as consequential as the difference between `++i` and
`i++`.
It's fun to make use of esoterica like `seq`'s behavior with an empty list.
Back in the early days, it was necessary. Witness Guy Steele's StrangeLoop talk
that began with the need to get a program to fit onto a single punched card.
And language implementors still need to care about those things.
But, for the rest of us, the necessity has drained out of that kind of
esoterica. It's now more of a shibboleth, a way to identify yourself as one of
the tribe. That's actually tolerable human behavior, but those who indulge in
it shouldn't feel *smug*. Rather, the opposite.
--------
Latest book: /Functional Programming for the Object-Oriented Programmer/
https://leanpub.com/fp-oo
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
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
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.