branch: elpa/loopy
commit 2173cd58e3a53ff69ef06932ad2dec9f1b714454
Author: okamsn <[email protected]>
Commit: GitHub <[email protected]>
Remove `loopy--apply-function`, which duplicates `byte-optimize-funcall`.
(#263)
This function checked whether the function form was quoted, in which case
it returned a direct function call instead of using `funcall`. However,
the function `byte-optimize-funcall` already does that, so there
is no point to `loopy--apply-function`.
- In `lisp/loopy-misc.el`, remove `loopy--apply-function`.
- In `lisp/loopy-commands.el`, modify the `accumulate` and `reduce`
commands to always output code using `funcall`.
---
lisp/loopy-commands.el | 12 ++++++------
lisp/loopy-misc.el | 11 -----------
2 files changed, 6 insertions(+), 17 deletions(-)
diff --git a/lisp/loopy-commands.el b/lisp/loopy-commands.el
index 7bdf1a95981..1b9c3015850 100644
--- a/lisp/loopy-commands.el
+++ b/lisp/loopy-commands.el
@@ -1970,12 +1970,12 @@ you can use in the instructions:
(loopy--check-accumulation-compatibility loopy--loop-name var
'generic cmd)
`((loopy--accumulation-vars (,var nil))
(loopy--main-body
- (setq ,var ,(loopy--apply-function (cl-third args) val
var)))))
+ (setq ,var (funcall ,(cl-third args) ,val ,var)))))
:implicit (progn
(loopy--check-accumulation-compatibility loopy--loop-name var
'generic cmd)
`((loopy--accumulation-vars (,var nil))
(loopy--main-body
- (setq ,var ,(loopy--apply-function (cl-second args) val var)))
+ (setq ,var (funcall ,(cl-second args) ,val ,var)))
(loopy--implicit-return ,var))))
;;;;;;; Adjoin
@@ -2597,7 +2597,7 @@ by `cl-reduce'."
:implicit `(,@(cond
((loopy--with-bound-p var)
`((loopy--main-body
- (setq ,var ,(loopy--apply-function (cl-second args) var
val)))))
+ (setq ,var (funcall ,(cl-second args) ,var ,val)))))
(t
(let ((first-time (gensym "first-time")))
`((loopy--accumulation-vars (,var nil))
@@ -2606,12 +2606,12 @@ by `cl-reduce'."
(if ,first-time
(setq ,first-time nil
,var ,val)
- (setq ,var ,(loopy--apply-function (cl-second args)
var val))))))))
+ (setq ,var (funcall ,(cl-second args) ,var
,val))))))))
(loopy--implicit-return ,var))
:explicit `(,@(cond
((loopy--with-bound-p var)
`((loopy--main-body
- (setq ,var ,(loopy--apply-function (cl-third args) var
val)))))
+ (setq ,var (funcall ,(cl-third args) ,var ,val)))))
(t
(let ((first-time (gensym "first-time")))
`((loopy--accumulation-vars (,var nil))
@@ -2620,7 +2620,7 @@ by `cl-reduce'."
(if ,first-time
(setq ,first-time nil
,var ,val)
- (setq ,var ,(loopy--apply-function (cl-third args)
var val))))))))))
+ (setq ,var (funcall ,(cl-third args) ,var
,val))))))))))
;;;;;;; Sum
(loopy--defaccumulation sum
diff --git a/lisp/loopy-misc.el b/lisp/loopy-misc.el
index a36c56ed7f3..5222964876c 100644
--- a/lisp/loopy-misc.el
+++ b/lisp/loopy-misc.el
@@ -355,17 +355,6 @@ If not, then it is possible that FORM is a variable."
(eq (car form-or-symbol) 'function)
(eq (car form-or-symbol) 'cl-function))))
-;; TODO: Byte optimization for `funcall' with a quoted argument
-;; should expand to (FUNC ARGS...), so we shouldn't need
-;; this function.
-(defun loopy--apply-function (func &rest args)
- "Return an expansion to appropriately apply FUNC to ARGS.
-
-This expansion can apply FUNC directly or via `funcall'."
- (if (loopy--quoted-form-p func)
- `(,(loopy--get-function-symbol func) ,@args)
- `(funcall ,func ,@args)))
-
;;;; Membership