How about this recommendation: use the exact same language that your book or tutorial teaches!
Racket has even gone out of its way not to be named Scheme (it was a Scheme once called PLT Scheme, but changed its name). Scheme, in turn, went out of its way not to be named Lisp.
A tutorial that purports to be about Lisp is quite probably about a traditional language which has characteristics such as the symbol nil being a self-evaluating expression representing the empty list and Boolean false.
On the other hand most people, who are quite professional in our field I might add, don't even know the names of the most used LISP derivatives. Many also don't even realize they have one built into their browser that is perfectly adequate for satisfying the desires to explore functional programming and general computation principles.
This isn't a statement of malice or even a bad question from the GP. It is confusing and we only have ourselves to blame for this (ourselves being the world of people who want FP to become more mainstream in the SE world).
Look at the stark differences in these two websites:
- http://racket-lang.org/
- https://www.rust-lang.org/
What we need is this (with much less crap): - https://www.python.org/
And what we don't need is this (with all of this text and few examples of what you CAN do): - http://julialang.org/
Granted these are for different markets but the point still stands. If you want adoption by the general software development communities we must make a good case as to why this move should be made. Historically this required a few factors 1. A better alternative to at least 1 problem *
2. A simple unified way of introducing people to the change
3. Simple support for the rollover. Or at least simple enough as to not overpower the benifits presented by switching over.
* = Something that has already been done by the FP community.You have to understand that peeople call it like they see it and when they see Lots of Insane and Silly Parrens they see LISP and no name change will disaccosiate Scheme, Racket, and LISP in the eyes of the average programmer. I've been using functional languages for a good part of my life as a programmer and I feel they ARE the same. The ideas are common even if their presentation isn't.
The only LISP-Like languages that have sucessfully hid from the tarnished name of LISP are JavaScript and Python and they've managed to develop their own bad raps for themselves in the eyes of some programmers.
No progress will be made by barrating people. Prucussive maintence works on tools and gear, not peers.
Are you referring to Javascript being a LISP dialect here? I've heard this occasionally but I also though that the one predominant feature of LISP was that of homoiconicity which I don't believe applies to Javascript or is that not correct? Thanks.
Watch David C.'s talk on JavaScript the Good Parts to see this diamond in the rough.
Where did you get that from?
Almost all Lisp dialects allow you to write functional and/or imperative code.
Edition 2 of SICP was reimplemented in Common Lisp [0] (more specifically ANSI Common Lisp). Common Lisp is to Racket/Scheme/JavaScript/Clojure as C is to Rust/Java/Python/C++. It isn't the only way to implement a language and no one will say it's the "best" when compaired to My Favorite Implementation (TM) but everything draws from it and everything influenced it at the same time. It's the common ground that everyone can hold a leg on and knowing it will be your Rosetta Stone.
One common implementation is CLISP which is a GNU package.
To find out how everything works it is recommended that you attempt to read through the UNIX man page on the operation of this program. You will better understand how to interface with the program then. If you've used python then you will instantly recognize the idea of the REPL. [1]
If you have a software development background then [2] is probably all you need to get started. If not, as I have mentioned, you can check out SICP [3] as the book is online for no cost on an MIT website. Reading through this, maybe even one chapter per day, and doing the exercises as the book tells you to will give you a solid understanding of the concepts.
[0] - https://en.wikipedia.org/wiki/Common_Lisp
[1] - http://www.clisp.org/impnotes/clisp.html
[2] - https://en.wikipedia.org/wiki/Common_Lisp#Syntax
[3] - https://mitpress.mit.edu/sicp/full-text/book/book.html
GNU project's Common Lisp implementation is a project called GCL: GNU Common Lisp, a descendant of Kyoto Common Lisp.
Also, your analogy that Common Lisp to various Schemes and Clojure is like C to Java/Rust/Python is severely flawed in multiple ways.