<p>I have some code which collects points (consed integers) from a loop which looks something like this:</p>

<pre><code>(loop
    for x from 1   to     100
    for y from 100 downto 1
        collect `(,x . ,y))
</code></pre>

<p>My question is, is it correct to use <code>`(,x . ,y)</code> in this situation?</p>

<p>Edit: This sample is not about generating a table of 100x100 items, the code here just illustrate the use of two loop variables and the consing of their values. I have edited the loop to make this clear. The actual loop I use depends on several other functions (and is part of one itself) so it made more sense to replace the calls with literal integers and to pull the loop out of the function.</p>

Why not just
```
```
(cons x y)
```
```
By the way, I tried to run your code in CLISP and it didn't work as expected. Since I'm not a big fan of the loop macro here's how you might accomplish the same thing recursively:
```
```
(defun genint (stop)
  (if (= stop 1) '(1)
      (append (genint (- stop 1)) (list stop))))

(defun genpairs (x y)
  (let ((row (mapcar #'(lambda (y)
                        (cons x y))
                        (genint y))))
    (if (= x 0) row
        (append (genpairs (- x 1) y)
                row))))

(genpairs 100 100)
```
```