Exercise 1.1 ============ The difference between eq and equal is the following: eq checks whether two objects are the same, where equal checks whether the two arguments have the same components. eq returns t if the two objects are integers with the same value. Also, symbolic names are normally unique. If the arguments are symbols with the same name, eq also returns t. For all other types, two arguments are not necessarily eq, so it returns nil. In contrast, there is equal. equal looks inside nonidentical arguments to see if their elements or contents are the same. So if two objects are eq, they are also equal but not necessarily vice versa. Based on this example there is no difference between eq and eql. They both return nil as result on the same arguments. But: eql is equivalent to eq for symbols and to = for numbers. equal is equivalent to eql for symbols and numbers. It is true for two conses if and only if their cars are equal and their cdrs are equal. It is true for two structures if and only if the structures are the same type and their corresponding fields are equal.