Как сказал sepp2k, обычным способом создания списков во время выполнения является функция list
. Списки в кавычках - это литералы списков, литеральных значений.
Но есть и другой способ создания списков во время выполнения, который больше похож на цитируемые списки, обратная цитата. Вы можете достичь того, что вы хотите с
`(,data1 20)
Еще одна вещь, касающаяся ваших примеров: вам не нужны progn
s. progn
предназначен для упорядочения нескольких выражений с последующим возвращением значения последнего из них, если это просто выражение с одним значением, вы можете просто использовать его без переноса. Но даже если бы у вас было несколько выражений, вам не нужно было бы использовать progn
в этом случае, потому что let*
неявно помещает progn
вокруг тела.