4 ms·
Indeed. As much as I dislike CL's quirky inelegance (I prefer the scheme side of the Lisp family tree), it's a tremendously powerful and effective language, and
by qwertyuiop924 10y ago
Indeed. As much as I dislike CL's quirky inelegance (I prefer the scheme side of the Lisp family tree), it's a tremendously powerful and effective language, and one of the best choices for Getting Stuff Done Right Now using Lisp. In fact, probably the best choice.
- Koshkin 10y ago> quirky inelegance On the other hand, quoting Einstein's quote found in the famous book by Sussman and Wisdom who use Scheme to teach Classical Mechanics, "I adhered scrupulously to the precept of that brilliant theoretical physicist L. Boltzmann, according to whom matters of elegance ought be left to the tailor and to the cobbler.”
- dleslie 10y agoTailors and cobblers do practical tasks day in and day out; whereas physicists stretch their imagination to dream of the yet-known. Somehow I think the analogy falls apart on close consideration. ;)
- taeric 10y agoAll analogies fall apart on close consideration. In this case, though, I think it still works. It says nothing of the work they do, but more to the goal of their work. Tailors/coblers (fashion, in general) are tasked with making elegant attire. It is true that some are tasked with making practical attire. Physicists, however, are never tasked with making elegant physics. It is rewarded. But it is not directly their task.
- jasonm23 10y agoI always enjoyed this take on analogies, and their consistent property of falling apart upon close consideration. > An analogy is like a finger pointing at the moon, pay too much attention to the finger and you miss out on all the heavenly glory.
- qwertyuiop924 10y agoquirkyness isn't good in a PL: you want your language to act the way you'd expect, and have the arg orderings, function names, etc. That way, you don't get it wrong.
- brudgers 10y ago[ANSI] Common Lisp may be unique among programming languages in that it is based on a standard and that standard was written to reflect how people were actually using Lisp after roughly thirty years of general use and about a decade of actual Common Lisp use. The other thing about Lisps is that if a programmer doesn't like the order of arguments or the function names or even the parenthesis, the language lets them change whatever it is they don't like and the changed features still have first class status. That's also one of the criticisms of Lisps.
- qwertyuiop924 10y agoYes, but the defaults matter. And I do understand why CL is the way it is. That doesn't mean it's perfect (neither is Scheme: I just happen to prefer it).
- brudgers 10y agoI think the specification committee for ANSI Common Lisp would have agreed that defaults matter. It's just that their criteria for defaults was "What professional programmers are doing right now". Historically, Scheme somewhat dodged avoided issues like argument order by excluding functionality from the language spec. My experience is that once Scheme gets expanded out and becomes Racket, the many hands show up as inconsistencies among similar functions much like Common Lisp. Clojure, to me, seems to have the right idea: procedures that abstract operations from data types...for example there is not one mapping procedure for lists and another mapping procedure for arrays. Racket seems to be headed in that direction.
- kbp 10y ago> for example there is not one mapping procedure for lists and another mapping procedure for arrays. In Common Lisp, MAP works just as well on either.
- lukego 10y ago> As much as I dislike CL's quirky inelegance (I prefer the scheme side of the Lisp family tree) Obligatory link: A Short Ballad Dedicated to the Growth of Programs. http://people.cs.uchicago.edu/~wiseman/humor/large-programs.html http://people.cs.uchicago.edu/~wiseman/humor/large-programs....
- qwertyuiop924 10y agoThat last transformation isn't needed. And with if and aif, you can get it down to two and one lines respectively. But yes, it's one of Scheme's few failings. And it's one of the things that makes me consider switching to CL. As much fighting as there is between them, they're not that dissimilar...
- samth 10y agoThe second program will work in every Scheme I can think of (depending on what you want returned when the condition fails, but it shouldn't crash). I don't know what T did differently, but it's no longer the case.