Думай о множестве! это специальная форма типа define, которая не оценивает свой первый операнд. Вы говорите интерпретатору схемы установить эту переменную именно так, как вы пишете. В вашем примере он не будет вычислять выражение «a к слову a. Вместо этого он будет искать привязку переменной с именем «a» (или в зависимости от того, что ваш интерпретатор может просто сломать раньше, так как я думаю, что «a» не является допустимой привязкой).
Для последнего набора выражений, если вы хотите установить автомобиль пары, используйте функцию (set-car! Pair val), которая работает так же, как любая функция схемы, в которой она оценивает все свои операнды. Он принимает два значения, пару и некоторое значение схемы, и изменяет пару так, что автомобиль теперь указывает на значение схемы.
Так, например.
>(define pair (cons 1 2))
>pair
(1 . 2)
>(set-car! pair 3)
(3 . 2)