I've looked through *On Lisp*, *Practical Common Lisp* and the SO archives in order to answer this on my own, but those attempts were frustrated by my inability to name the concept I'm interested in. I would be grateful if anyone could just tell me the canonical term for this sort of thing.

This question is probably best explained by an example. Let's say I want to implement Python-style list comprehensions in Common Lisp. In Python I would write:

```
[x*2 for x in range(1,10) if x > 3]

```

So I begin by writing down:

```
(listc (* 2 x) x (range 1 10) (> x 3))

```

and then defining a macro that transforms the above into the correct comprehension. So far so good.

The interpretation of that expression, however, would be opaque to a reader not already familiar with Python list comprehensions. What I'd really like to be able to write is the following:

```
(listc (* 2 x) for x in (range 1 10) if (> x 3)) 

```

but I haven't been able to track down the Common Lisp terminology for this. It seems that the `loop` macro does exactly this sort of thing. What is it called, and how can I implement it? I tried macro-expanding a sample loop expression to see how it's put together, but the resulting code was unintelligible. Could anyone guide me in the right direction?

Thanks in advance.