Я не велосипедист, я только учусь... ^_^

Jan 06, 2010 05:12

В порядке оффтопа, придумал такую штуку:

(defun maphash-list (function-designator hash-table)
  "Map the hash, collect in a list"
  (let ((result nil))
    (flet ((func-wrapper (key value)
             (push (funcall function-designator key value)
                   result)))
      (maphash #'func-wrapper hash-table))
    result))

Вначале хотел, чтоб возвращался хэш с такими же ключами, как в оригинале, но с обработаными функцией значениями, но этот хэш потом как обрабатывать для вывода? Выйти из глубокой рекурсии мозга помог костыль "список + format", чего для локальных нужд вполне хватило, т.к. надо было получить дамп хэша:

(format nil "~{~a~^, ~}"
        (maphash-list #'(lambda (key value)
                        (format nil "~a => '~a'" key value))
                      my-hash)))

лисп

Previous post Next post
Up