In Python and Haskell, there are very simple and powerful list comprehension usage:
>>> [(X, y) for X in range (1, 4) for Y in ["A", "B"] <br/> [(1, 'A'), (1, 'B'), (2, 'A'), (2, 'B'), (3, 'A'), (3, 'B')] <br/>
In Common LISP, you can use the incf-Cl library for implementation. It is convenient to install quicklisp:
* (QL: quickload "incf-Cl") <br/> to load "incf-Cl": <br/> load 1 ASDF system: <br/> Cl-ppcre <br/> install 1 quicklisp release: <br/> incf-Cl <br/>; fetching # <URL "http://beta.quicklisp.org/archive/incf-cl/2010-10-06/incf-cl-20101006-git.tgz"> <br/>; 14.63kb <br/> ====================================== ==================< br/> 14,981 bytes in 0.01 seconds (ipv4.99kb/sec) <br/>; loading "incf-Cl" <br/> .............................. .................... <br/> [Package incf-Cl] ...... <br/> ("incf-Cl") <br/> * (use-package: incf-cl) <br/> T <br/> * (LC (cons x y) (<-X (range 1 3) (<-y '(a B ))) <br/> (1. a) (1. b) (2. a) (2. b) (3. a) (3. b) <br/>
Incf-Cl is a syntax that imitates HASKELL:
Prelude> [(x, y) | x <-[1 .. 3], Y <-["A", "B"] <br/> [(1, "A"), (1, "B"), (2, "A"), (2, "B"), (3, "A"), (3, "B")] <br/>