From 4ce293cccc70789d68a490af2c38a9e8b82d6f7f Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 24 Jan 2017 10:50:02 -0800 Subject: bugfix: use proper plist lookup in new :key macro. * share/txr/stdlib/keyparams.tl (sys:extract-keys, sys:extract-keys-p): Use the brand new memp function rather than memq. memq is not correct for plist lookup because of ambiguities like (:foo :bar :bar 3) where memq retrieves (:bar :bar 3) for :bar rather than (:bar 3). --- share/txr/stdlib/keyparams.tl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/txr/stdlib/keyparams.tl b/share/txr/stdlib/keyparams.tl index b3474c4e..fde55e0b 100644 --- a/share/txr/stdlib/keyparams.tl +++ b/share/txr/stdlib/keyparams.tl @@ -27,14 +27,14 @@ (defun sys:extract-keys (keys args) (build (each ((k keys)) - (iflet ((f (memq (car k) args))) + (iflet ((f (memp (car k) args))) (add (cadr f)) (add (cdr k)))))) (defun sys:extract-keys-p (keys args) (build (each ((k keys)) - (add (if (memq k args) t))))) + (add (if (memp k args) t))))) (defun sys:build-key-list (key-params) (let ((constant (group-by [chain second constantp] key-params))) -- cgit v1.2.3