Hi,
I’d like to second Vladimir’s recommendation of Felleisen's How to Design Programs (https://htdp.org/). It is a very well-written book that doesn’t go too deep without preparing you first. (I should note that I didn’t finish it.) SICP is a classic, and it is very comprehensive, but it is also has a steeper learning curve than other books. Some of the exercises are really hard, and some are a little too “engineery” for casual programmers. You will spend a lot of time on each important concept, but it can be hard to stay motivated for as long as it takes to get to the next exciting concept. I prefer the videos by the authors, which cover the same ground but more quickly, so staying motivated is less of an issue. If you want a book that will definitely keep you busy: this is it. Unlike others, I did not enjoy The Little Schemer much. It has a very unique style of questions and answers, but sometimes it feels very forced and it ended up confusing me more than it helped. Some people swear by The Little Schemer, but personally I would not recommend it to new learners. “The Land of Lisp” is quirky and an odd joy to read! It’s got cartoons and weird drawings, so if you have a short attention span like me you’ll appreciate that. If you use it to prepare yourself for learning Scheme, though, you’ll be disappointed as the code they present is not at all idiomatic Scheme. There’s a lot of mutation and inelegant Common Lisp forms (well, “inelegant” or “overengineered” from a Schemer’s perspective, perhaps) that are not how you’d do things in Scheme. There’s hardly anything about functional programming in the book, and sometimes I found the examples too long to develop an intuition about the problem and how to solve it myself from scratch. (The author also compares Haskell and purely functional programming to an oppressive regime in a cartoon, which I think is in poor taste.) Perhaps games aren’t the best kinds of problems for learing a new language. “Realm of Racket” is very similar to “Land of Lisp”, but I had — inexplicably — less fun and ended up skipping over many of the examples. It’s not really a problem with the writing — perhaps I just grew tired of motivating myself with games. It uses Racket, which I think is a more beautiful (collection of) language(s) than Common Lisp, and it is closer to what you would find in Guile. -- Ricardo