I'm a Common Lisp programmer, and am beginning to get tired of phrases like "But while Racket retains the functional goodness of Lisp, ...". It's becoming increasingly dishonest to peddle Lisp as a functional language that stands in contrast to, say, Ruby or Python or what have you. Yes, Lisp has very functional roots. But that was fifty years ago. The Lisp of the past two or three decades is fully multi-paradigmatic. It supports a functional style, but it supports other styles (object-oriented, imperative, ...) just as well if not better. Haskell is functional. ML is functional. Heck, Clojure is functional. If my only attraction to Lisp was FP I'd be using one of those languages instead.
That said, lest I be perceived as too negative, I am very excited that this book is being published. Racket has always stricken me as very clean and friendly (two adjectives less applicable to CL), and advancing Lisp enthusiasm in any form is never a bad thing. Cheers!
It's not incorrect, just misleading. If I made a Python descendant named Monty and said, "Monty retains the functional goodness of Python", wouldn't you give me flack since that's not the main point of Python?
What if I said C++ retained the imperative goodness of C?
In Scheme and Racket it's more idiomatic to use the functional version. It isn't enforced by the language. For example you can use imperative code locally but usually try to enclose that in an apparent functional procedure.
In particular, a few years ago the Racket team made many structures immutable, to promote functional code and enable some optimizations. The language has the mutable versions, so you can use them if you like.
Aren't you conflating "Lisp" with "Common Lisp" here?I suspect this, because I was told that for CL users the word "Lisp" means their particular Lisp incarnation. For the rest of the world - at least in those parts of the world where people speak Scheme or Clojure or newLisp or Shen or... - the word "Lisp" means "a family of languages, descendants of John McCarthy's 'original' one with this original included".
So your objection is unfounded - CL is not primarily FP oriented, but it was not CL that the author of the quote meant when writing the word "Lisp".
To a degree, yes. But that's because CL is roughly speaking the set union of all Lisps available in the '80s. Scheme was off doing its own thing, and knew it.
Even today, languages make it clear where they're coming from. The claim to fame of Clojure is that it's a) a Lisp that b) uses FP to make many things easier, notably but not exclusively concurrency (and, as a result of the FP focus, a big difference between Clojure and other Lisps is that by default it uses immutable data structures) and c) runs on the JVM.
Note that the emphasis on FP is something Clojurians use to draw in Lispers from other dialects. Similar arguments could be made for Shen, Qi, etc.
The unique selling proposition of Lisp as a whole is that it's homoiconicity lets you treat code as data and exploit that using macros and such. Racket illustrates this beautifully--from what I've seen it's common for a library to introduce new syntax and such. The unique selling proposition of Lisp is not that it's darn good at functional programming--that's just a very fortunate side-effect.
Not really, Interlisp for example looks very different from Common Lisp. Standard Lisp looks different. A bunch of other dialects, too. Incl. Scheme, Logo, LeLisp, ...
Common Lisp is basically a modernized version of Maclisp, integrating existing research/implementation on other Maclisp successors (NIL, Lisp Machine Lisp, ...).
Apparently on sale today with coupon code RACKETEERS making it like 23.97 for both print and ebook! I feel like I am a marketing shill or something but for real that is a great deal and I have been looking for a racket/scheme book to use for teaching!
edit
To follow up - got the book and have been reading through it. Already super impressed with the tone, pictures, lisp history lesson, and particularly the cartoon of guy and gerry!
This is totally mega uber awesome as I am br0k3 right now and this saved me mega $$$$$. TY Shaun. My code mate Luis Borjas will appreciate this also. Maybe I should even forward this to the Hacker School students.
The best way to describe Racket is as an ecosystem. The analogy I would make:
EMACS : text editor
Racket : programming language
This is to say that Racket comes with enough batteries to make it a platform...or at least Racket is striving to achieve cradle-to-grave coverage. It doesn't just come with tutorials, but a complete programming course - How to Design Programs.
It comes with tools for building languages, creating presentations, and writing documents. No email, though (yet).
No Starch is probably my current favorite tech book publisher, I've yet to run across anything less than great under their label and I've been using DrRacket recently to work through SICP.
There's a new release of Racket to go along with the book. It comes with a library ("collection" in racket-speak) with the source code of the book examples. http://blog.racket-lang.org/2013/06/racket-v535.html
If you're going to put the effort, I'd choose Clojure. It's still a Lisp but a lot less awkward than most dialects and has a very rich ecosystem (and Java interop, which is both good and bad).
I'm tempted to buy this for friends. I started seriously programming after taking a class taught by Fellesien using How to Design Programs (http://htdp.org/)
It is not just like Land of Lisp, it seems to be just Land of Lisp ported to Racket by a group of students supervised by Conrad Barski and Matthias Felleisen. Barski and Felleisen arent even credited as the primary authors of the book.
Realm of Racket (ROAR) is not a translation of Land of Lisp,
but it is heavily inspired by LOL. Our emphasis is on readers
who have done some programming, possibly in Racket-based
teaching languages but not necessarily so, and who wish to
see the beginnings of Racket. You may wish to check out the
sample chapter on Hungry Henry and compare ROAR to LOL
before you buy. Or borrow the book from a friend to see how
ROAR ends in a chapter on #lang.
The author team really consists of eight students and two
'old' people: David Van Horn and myself. As is tradition in
my lab, young people go first and 'old' people come last on
an author list. Everyone knows us already anyway.
"Land of Lisp" is actually what turned me on to PG/HN/startups a few years ago. I believe there was a passing mention of PG somewhere near the beginning and that got me started reading essays.
I am very excited for this book as I do prefer the cleanliness of Scheme to CL.
Quite surprised by a high cost of shipping a printed book to Canada - $19.95 per item that almost doubles the cost of the whole purchase. eBook it is...
While it's tempting to think of Racket as a Scheme implementation, and that was at one time true, the situation these days is quite different. It's a lot more accurate to say that Racket ships with a Scheme-like default language (and an actual R5RS-compatible Scheme), but that it's actually a wonderful language toolkit. Racket has the ability for individual modules to use their own syntax. Not macros; full-fledged syntax. Racket ships with several Lisp-like syntaxes, but it also ships with Datalog and ALGOL-68. And this is very much unique to Racket.
> Is it really, I know that racket is a scheme implementation
Racket is not a Scheme implementation, which is one of the reasons it is now called "Racket" (Scheme used to be part of its name.)
It is a Lisp dialect that is "a descendant of Scheme". The Racket distribution includes support for a variety of different languages (including implementations of R5RS and R6RS Scheme), but the Racket language is not a Scheme implementation.
It's got standard macros, plus all of the other "languages" that come with it, like Algol, Typed Scheme, Lazy Scheme, Honu?, and others, plus the ability to make it run languages of your own design. So, I would agree with that. Maybe not if you're strictly talking about the main language "Racket" that's run by the Racket VM.
Apart from the merits of Racket (which are considerable, you couldn't build Typed Racket in CL), the "most unique programming language in the world" is a joke about the Dos Equis ads [1].
That said, lest I be perceived as too negative, I am very excited that this book is being published. Racket has always stricken me as very clean and friendly (two adjectives less applicable to CL), and advancing Lisp enthusiasm in any form is never a bad thing. Cheers!