Common Lisp のほとんどの実装では、コンス セルは通常/常にヒープに割り当てられていると思います ( Why is consing in Lisp slow? を参照) 。
Common Lisp は、関数から複数の値を返すための機能を提供します (values戻るときとmultiple-value-bind呼び出しサイトで使用します)。ここで少し推測していますが、この構築の動機は2つあると思います.1)truncate破棄された値を気にしない典型的なケースで関数を使いやすくする.2)ヒープに割り当てられたデータ構造をまったく使用せずに複数の値を返し、(実装によっては (?)) ヒープを完全に回避します (後で GC オーバーヘッドを回避します)。
Common Lisp (またはおそらく SBCL のような特定の実装) を使用すると、スタックに割り当てられたデータを (おそらく弱い参照のようなものと組み合わせて) 使用したり、複合/大規模な値の型 (C の構造体のようなもの) を作成したりできますか?