Clojure map - Lisp
Формулировка задачи:
Есть ли map, который бы применял переданную функцию ко всем значениям из PersistentArrayMap'а
т.е. я хочу что-то в духе
(map inc {"x" 7 "y" 8}) ; ==> ({"x" 8 "y" 9})Решение задачи: «Clojure map»
textual
Листинг программы
(defun f (lst)
(mapcar (lambda (x) (if (numberp x) (+ x 1) x)) lst))
==> f
(f '("x" 7 "y" 8))
==> ("x" 8 "y" 9)
;; Если же нужно задавать действие над числами, то вот:
(defun ff (lst f)
(mapcar (lambda (x) (if (numberp x) (funcall f x) x)) lst))
==> ff
(ff '("x" 7 "y" 8) (lambda (x) (* x x)))
==> ("x" 49 "y" 64)