我希望在一定条件下从列表列表中获得一些列表。例如:
`((a w) (e w))`
来自
`((a w) (e w) (i u) (o u))`
条件是“ w”位于第二位置。
我的代码
(filter (andmap (equal? (cdr lst) 'w)) 'lst)
与
(define lst '((a w) (e w) (i u) (o u)))
不起作用。我在做什么错了?
答案 0 :(得分:1)
您不应引用该列表:'lst
与lst
不同。要访问第二个元素,请使用second
(如果未定义,请使用cadr
)。使用cdr
,您将获得列表的 rest (另一个列表),而不是列表的第二个 。哦,filter
期望lambda
作为其第一个参数,而不是andmap
。这就是我的意思:
(define lst '((a w) (e w) (i u) (o u)))
(filter (lambda (sl) (equal? (second sl) 'w))
lst)
=> '((a w) (e w))