Lisp 从亚历山大港到普利斯特

Lisp 从亚历山大港到普利斯特,lisp,common-lisp,Lisp,Common Lisp,亚历山大港在将一个简单的主义者转变为普利斯特方面表现出色,例如: > (get-document "flower-photo-with-lytro") ((:|_id| . "flower-photo-with-lytro") (:|_rev| . "6-eb6d9b71251c167039d3e73d8c0c9a63") (:TITLE . "flower-photo-with-lytro") (:AUTHOR . "devnull") (:TEXT . "hello her

亚历山大港在将一个简单的主义者转变为普利斯特方面表现出色,例如:

> (get-document "flower-photo-with-lytro")

((:|_id| . "flower-photo-with-lytro")
 (:|_rev| . "6-eb6d9b71251c167039d3e73d8c0c9a63")
 (:TITLE . "flower-photo-with-lytro")
 (:AUTHOR . "devnull") 
 (:TEXT . "hello here is a  sample flower .... ")
 (:TIME . "3558566236"))


> (alexandria:alist-plist (get-document "flower-photo-with-lytro"))

(:|_id| "flower-photo-with-lytro" :|_rev| "6-eb6d9b71251c167039d3e73d8c0c9a63" 
 :TITLE   "flower-photo-with-lytro" :AUTHOR "devnull"
 :TEXT "hello here is a sample flower .... " :TIME "3558566236")
我如何使用alexandria来格式化一个更结构化的列表

> (invoke-view "hulk" "time")

((:|total_rows| . 2)
 (:|offset| . 0)
 (:|rows|
  ((:|id| . "flower-photo-with-lytro")
   (:|key| . "3558566236")
   (:|value| . "flower-photo-with-lytro"))
  ((:|id| . "hello-world-in-common-lisp-and-restas")
   (:|key| . "3558567019")
   (:|value| . "3558567019-hello-world-in-common-lisp-and-restas"))))
获取具有:id、:key和:value的plist

(defparameter *test*
  '((:|total_rows| . 2)
    (:|offset| . 0)
    (:|rows|
     ((:|id| . "flower-photo-with-lytro")
      (:|key| . "3558566236")
      (:|value| . "flower-photo-with-lytro"))
     ((:|id| . "hello-world-in-common-lisp-and-restas")
      (:|key| . "3558567019")
      (:|value| . "3558567019-hello-world-in-common-lisp-and-restas")))))

(defun rows-alist (tree)
  (list (car tree)
        (cadr tree)
        (alexandria:flatten (caddr tree))))
好吧,我试着猜


如果要重命名关键字:

(defun rows-alist (tree)
  (list (car tree)
        (cadr tree)
        (mapcar
         #'(lambda (x)
             (if (symbolp x)
                 (intern
                  (string-upcase (symbol-name x))
                  "KEYWORD") x))
         (alexandria:flatten (caddr tree)))))

很遗憾看到一些ppl浏览CommonLisp只是为了否决问题!问题是(:| total_rows |.2)(:| offset |.0)(:| rows |所需的输出一个带有id key和value的plist:):id:key:value