常见的lisp中嵌套的mapcars

anq*_*egi 3 common-lisp

我想结合两个列表的所有可能组合,为此我使用mapcar

CL-USER> (mapcar #'(lambda (x) (mapcar #'(lambda (y) (list x y)) '(aa bb cc dd))) '(a b c))

(((A AA) (A BB) (A CC) (A DD)) ((B AA) (B BB) (B CC) (B DD))
 ((C AA) (C BB) (C CC) (C DD)))
Run Code Online (Sandbox Code Playgroud)

答案是正确的,但我得到一个嵌套列表,我该如何解决这个问题.我不想将该列表压平一层,我对mapcar的使用很糟糕,但我无法弄清楚如何解决这个问题

sds*_*sds 5

更换顶层mapcarmapcan和你是金:

(mapcan (lambda (x) 
          (mapcar (lambda (y) (list x y))
                  '(aa bb cc dd)))
        '(a b c))
==> ((A AA) (A BB) (A CC) (A DD) 
     (B AA) (B BB) (B CC) (B DD)
     (C AA) (C BB) (C CC) (C DD))
Run Code Online (Sandbox Code Playgroud)