[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
What's up with apply-partially?
From: |
David Kastrup |
Subject: |
What's up with apply-partially? |
Date: |
Fri, 23 Jan 2015 23:14:06 +0100 |
The original definition of apply-partially in subr.el by Eli in 2008 has
been
(defun apply-partially (fun &rest args)
"Return a function that is a partial application of FUN to ARGS.
ARGS is a list of the first N arguments to pass to FUN.
The result is a new function which does the same as FUN, except that
the first N arguments are fixed at the values with which this function
was called."
(lexical-let ((fun fun) (args1 args))
(lambda (&rest args2) (apply fun (append args1 args2)))))
The current definition by Stefan, however, is
(defun apply-partially (fun &rest args)
"Return a function that is a partial application of FUN to ARGS.
ARGS is a list of the first N arguments to pass to FUN.
The result is a new function which does the same as FUN, except that
the first N arguments are fixed at the values with which this function
was called."
`(closure (t) (&rest args)
(apply ',fun ,@(mapcar (lambda (arg) `',arg) args) args)))
Now subr.el has lexical-bind set. It seems quite pointless to return
some unevaluated quoted list here (apply-partially is not a macro but a
function!).
So why not just
(defun apply-partially (fun &rest args)
(lambda (&rest args2) (apply fun (append args args2))))
Where is the point in the complicated redefinition that returns a
basically uncompiled function? Why not just take Eli's definition and
simplify it in line with lexical-binding now being set?
I don't understand the point of the change. Lexical bindings should
have made this function more straightforward. Instead it has become
more complex and unevaluated. And it's not like describe-function even
knows `closure', as opposed to `lambda'. So it's become inscrutable as
well.
--
David Kastrup
- What's up with apply-partially?,
David Kastrup <=
- Re: What's up with apply-partially?, Leo Liu, 2015/01/23
- Re: What's up with apply-partially?, Stefan Monnier, 2015/01/24
- Re: What's up with apply-partially?, David Kastrup, 2015/01/24
- Re: What's up with apply-partially?, Stefan Monnier, 2015/01/25
- [PATCH] Let apply-partially make use of lexical binding in subr.el, David Kastrup, 2015/01/25
- Re: [PATCH] Let apply-partially make use of lexical binding in subr.el, David Kastrup, 2015/01/27
- Re: [PATCH] Let apply-partially make use of lexical binding in subr.el, Stefan Monnier, 2015/01/29
- Re: [PATCH] Let apply-partially make use of lexical binding in subr.el, David Kastrup, 2015/01/29
Re: What's up with apply-partially?, Artur Malabarba, 2015/01/23