例如,我要一个函数,给我分配到一个我给所有的值:该函数返回与符号相关联的所有值
- >(giveme“X”((XY)(XZ) (BD)(XQ)))
- >(YZQ)
所以函数应该返回在这种情况下,YZ和q,因为这些在对关联于x。我想问这个问题的原因是因为我知道在一行中有一个映射函数。
例如,我要一个函数,给我分配到一个我给所有的值:该函数返回与符号相关联的所有值
- >(giveme“X”((XY)(XZ) (BD)(XQ)))
- >(YZQ)
所以函数应该返回在这种情况下,YZ和q,因为这些在对关联于x。我想问这个问题的原因是因为我知道在一行中有一个映射函数。
Common Lisp中:
CL-USER > (defun give-me (item list)
(mapcan (lambda (e)
(and (eq item (first e)) (list (second e))))
list))
GIVE-ME
CL-USER > (give-me 'x '((x y) (x z) (b d) (x q)))
(Y Z Q)
(define (giveme key dict)
(map cadr
(filter
(lambda (x) (eq? key (car x)))
dict
)
)
)
的Common Lisp:
(defun giveme (key pairs)
(loop for (k v) in pairs when (eq k key) collect v))
方案:
(define (giveme key pairs)
(apply append
(map (lambda (p) (if (eq? key (car p)) (cdr p) '()))
pairs)))
`本身map`不会做,但`地图`与`filter`配对。 – 2011-02-03 00:14:47