Трудно сказать, не видя всей программы (в частности, определение print-bintree), но это выглядит как простое недоразумение о том, как работает цитата.
В частности, кавычка перед открытым пареном означает, что содержимое пареннов интерпретируется на простом «языке данных», где последовательности символов интерпретируются как символы, а не как переменные.
Чтобы понять, что я имею в виду, давайте попробуем оценить несколько простых выражений
(zippy tong)
... выдает ошибку о том, что zippy
и tong
не определены.
Теперь попробуйте это:
'(zippy tong)
Результат будет немного зависеть от вашего принтера, но он выдаст то же самое, что и
(list 'zippy 'tong)
То есть ведущая кавычка означает, что zippy
и tong
интерпретируются как символы, а не как переменные.
В своем коде вы пишете:
'(interior-node 'foo ...)
Проблема в том, что вы используете кавычку, когда уже находитесь внутри выражения в кавычках. Это не делает то, что вы хотите. В частности, он будет производить что-то эквивалентное
(list 'interior-node (list 'quote 'foo) ...)
Так что, не углубляясь в магию цитаты, вероятно, будет достаточно удалить кавычки из 'foo
, 'bar
и т. Д. Внутри вашего определения bintree.