I really liked your take on this *Brian*. You kinda convinced me to use (if (not-empty? foo)) from now on :)
Alexander On Monday, May 27, 2013 2:58:38 AM UTC+3, Brian Marick wrote: > > > On May 26, 2013, at 5:47 AM, "Alex L." <alexand...@gmail.com <javascript:>> > 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 clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com 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 clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.