问题
I just cracked open The Little Schemer, and I feel like I'm missing something.
The first question asks "Is it true that this is an atom?", but I do not see any definition of what an atom is. I suppose I can derive what an atom is by the answers to the questions, but then it goes on to ask what is the car of l, and what is the cdr of l, and I have no idea what is being asked.
Is the purpose of the book to discover what the questions mean by reading the answers, or is there some basic knowledge that I need before I tackle this book? If the latter, can someone point me to where I might acquire that basic knowledge?
回答1:
Yes, the format of the little schemer will lead you to discover the concepts through the answers provided. Don't freak out, just keep reading.
回答2:
The Little Schemer teaches you Scheme through a sort of assimilation. Instead of giving you the definition of an atom it shows examples with a question and through it's answer it tells you why something is true or false and in the same time increase your knowledge about whats asked.
The way you learn Scheme though that book is the same way you learn concepts, material or not, as a toddler. It's proven to be a good way to learn natural languages so why not computer languages?
In the beginning of the book it says you need to be able to read English, recognize numbers and be able to count to make use of the book. In comparison, to read and understand a Scheme report (Scheme language definition) you need some knowledge of programming languages, mathematical concepts and how to read formal grammar.
回答3:
I think you will find the concept of "atom", "list" and "S-expression" after you read the fist chapter.
The book isn't the traditional book that teaches you what one concept is and then provides examples. It uses Q&A style to explain the concept of Scheme and functional programming with examples.
In another word, the questions are not for you to answer, it's a way to guide you to thinking.
回答4:
An atom is a basic unit in Scheme such as a number or a character.
car
returns the head of the list whereas cdr
returns the tail.
>(car '(a b c)) ; car returns the first element in the list...
'a
> (cdr '(a b c)) ; cdr returns the rest.
'(b c)
I would start with a basic tutorial.
来源:https://stackoverflow.com/questions/18510534/the-little-schemer-where-to-start