อยากใช้ get-in ใน Common Lisp บ้าง

อยากใช้ get-in แบบใน Clojure บน Common Lisp ก็เลยเขียนเอง ก็นี้ใช้ alist ก็น่าจะคล้าย ๆ array-map ของ Clojure

ก็เลยเขียนเองดูมันก็พอใช้ได้เหมือนกัน

(defun get-in (m ks)
  (labels ((recur (v ks)
             (if (null ks)
                 v
                 (recur (cdr (assoc (car ks) v))
                           (cdr ks)))))
    (recur m ks)))

ตอนมาใช้ก็สั่ง

(get-in '((:A . ((:B 10)))) '(:A :B))
;; ก้จะ return 10 ออกมา

ลองใช้ดูตอนนี้ยังไม่พบปัญหาอะไรครับ

Posted in ไม่มีหมวดหมู่

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s