Systems Programming with Racket
docs.racket-lang.org
docs.racket-lang.org
(I'm not necessarily disagreeing with you, but you haven't provided a definition of what you consider systems programming.)
Others seem to refer to it as anything that could be considered part of the OS, like writing drivers.
You may have heard of it before it was renamed (it used to be known as PLT Scheme).
I've just started working through Land of Lisp as well. I find myself wishing I were writing Racket instead of Common Lisp, but it's entirely possible that's just because I'm more familiar with Racket/scheme.
I wish I could offer a more definitive answer, but I'm just not far enough into the book yet to say.
* Tons of interesting language extensions -- any Scheme you have ever thought of -- implementations of laziness, static typing, logic programming, FRP
* Very good online documentation
* Great libraries for lots of things, combined with really easy online package management @ http://planet.racket-lang.org/
* Go look at all the cool things it does, don't they look fun? http://docs.racket-lang.org/
(require (prefix-in sqlite: (planet jaymccarthy/sqlite:4)))
and then have it automatically downloaded (plus dependencies) and ready for prime time...
I don't have a project in mind for either dialect. Basically, I want to learn lisp because I've heard learning lisp has certain mind expanding properties. This feature sounds like the mind expanding-est of all. And whatever skills I learn with Racket will probably be easily translated to Clojure, so it's not like I'd have wasted my time if I ended up working in a Clojure shop or on Clojure project.
Thanks to everyone who responded.
This paper(http://www.ccs.neu.edu/scheme/pubs/scheme2007-ctf.pdf) demonstrates how they made an explicitly-typed dialect of the dynamically typed language Racket.
Truly awesome stuffs.
Some* argue that hygienic-macros are an unnecessary burden because sometimes you need to capture variable names and this is easy to do with Common Lisp. The situation with Scheme is different because it stores variable and function definitions in the same way (Lisp-1 vs. Lisp-2).
Almost funny to compare now to the old days: I had a Xerox Lisp Machine in the early and mid-1980s. A great tool for rapid prototypes, but the question I could never answer was: how to deploy Lisp applications cheaply. That is no longer a problem!
I tried racket but just could not get namespaces to work, and the tool I was using, ometa for scheme[1] did not want to work properly without them. I spent hours, asked on the chat, read the documentation, etc. but just could not get it working. It felt like a bad omen, and ever since I've unfortunately been put off the language. The whole response I got/the documentation treated the whole thing as 'well it's obvious - foobar the fargle', where 'foobar the fargle' just made no sense to me. Maybe just not clever enough for racket...
/rant
Update mzscheme namespace usage for eval to use namespace anchors
I ought to check it out, I've not taken a look at the project for >1yr.
Which is not to say that you should not absolutely go for it. Fantastic environment all told and if you aren't coming to it with preconceptions then it's probably a better place to start learning than something as baroque as CL.