Omit condition from loop.
authorOleksandr Gavenko <gavenkoa@gmail.com>
Sun, 13 Jan 2013 15:57:08 +0200
changeset 1017 7b1ae3e0c9e3
parent 1016 6c3765dd9ed2
child 1018 94b0ca71a583
Omit condition from loop.
.emacs-my
--- a/.emacs-my	Sun Jan 13 15:01:14 2013 +0200
+++ b/.emacs-my	Sun Jan 13 15:57:08 2013 +0200
@@ -77,16 +77,14 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 (message "my defun, defmacro, defvar")
 
-(defmacro my-filter (condfunc list)
-  "Construct list with elements from LIST which satisfy CONDFUNC."
-  `(let (r)
+(defmacro my-filter (pred list)
+  "Construct list with elements from LIST which satisfy PRED."
+  `(let ( (r '(nil)) )
      (mapc (lambda (item)
-             (when (,condfunc item)
-               (if r
-                   (nconc r (cons item nil))
-                 (setq r (cons item nil)))))
+             (when (,pred item)
+               (nconc r (cons item nil))))
            ,list)
-     r))
+     (cdr r)))
 
 (defun my-fold (f x list)
   "Recursively applies (F i j) to LIST starting with X.