On 03/09/17 at 09:13pm, Mark Oteiza wrote:
On 02/09/17 at 02:41pm, Noam Postavsky wrote:
On Sat, Sep 2, 2017 at 9:36 AM, Mark Oteiza <mvoteiza@udel.edu> wrote:
This single tuple special case is troublesome IMO:
(if-let* (x) "dogs" "cats") => "cats"
(if-let* (x (y 2)) "dogs" "cats") => (void-function y)
(if-let* (x (y 1) (z 2)) "dogs" "cats") => "cats"
I'm curious if this was brought up in the old discussion when this was
implemented.
FWIW, this was brought up in the original thread.
https://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00228.html
IMO the original suggestion of having if-let and when-let be exclusively
single binding, while the starred versions excluding the single binding
special case would be more sane.
P.S. I just realized I didn't copy the tuple part of if-let* into
and-let* in the patch I just sent, and therefore missed the problem this
special case causes in tests.
This is a patch implementing the above: if-let and when-let only take
single tuple, while {if,when,and}-let* lose the single tuple special
case.