常见的lisp中嵌套的mapcars

时间:2017-08-24 11:28:28

标签: common-lisp

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

{http://plnkr.co/edit/JXbEWyCpLNoHflMzXjmG?p=preview}

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

1 个答案:

答案 0 :(得分:5)

替换顶级mapcar with mapcan并且你是金色的:

(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))