* new `pcase-let' syntax hotter than TikTok girls?
@ 2022-11-23 10:26 Emanuel Berg
2022-11-24 19:06 ` new `pcase-let' syntax Philip Kaludercic
0 siblings, 1 reply; 4+ messages in thread
From: Emanuel Berg @ 2022-11-23 10:26 UTC (permalink / raw)
To: help-gnu-emacs; +Cc: Andreas, Jovelou, Ladbon, Pebben, Per
Check out this syntax with `pcase-let'! :O
(pcase-let ((`(,up ,down) (if button
`(,#'backward-button ,#'forward-button)
`(,#'previous-line ,#'forward-line) ))) ... )
Advantage: A single test (here, `if') but without the bulky
and ugly combo with `let*' and `car'/`cadr' ...
Here is an example how it can be used, and actually is used already [1]
(defun set-vertical-keys (kmap &optional button np tab)
(pcase-let ((`(,up ,down) (if button
`(,#'backward-button ,#'forward-button)
`(,#'previous-line ,#'forward-line) )))
(define-key kmap "i" up)
(define-key kmap "k" down)
(when np
(define-key kmap "p" up)
(define-key kmap "n" down) )
(when tab
(define-key kmap [backtab] up)
(define-key kmap "\t" down) )))
and then for example [2]
(let ((kmap Buffer-menu-mode-map))
(set-vertical-keys kmap nil nil t)
;; ...
)
Too sexy for its shirt!
[1] https://dataswamp.org/~incal/emacs-init/scroll.el
[2] https://dataswamp.org/~incal/emacs-init/buffer-menu.el
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: new `pcase-let' syntax
2022-11-23 10:26 new `pcase-let' syntax hotter than TikTok girls? Emanuel Berg
@ 2022-11-24 19:06 ` Philip Kaludercic
2022-11-24 20:28 ` [External] : " Drew Adams
0 siblings, 1 reply; 4+ messages in thread
From: Philip Kaludercic @ 2022-11-24 19:06 UTC (permalink / raw)
To: help-gnu-emacs
Emanuel Berg <incal@dataswamp.org> writes:
> Check out this syntax with `pcase-let'! :O
>
> (pcase-let ((`(,up ,down) (if button
> `(,#'backward-button ,#'forward-button)
> `(,#'previous-line ,#'forward-line) ))) ... )
In what sense is this new?
I also get the feeling this is a hack for the sake of a hack. Is it
really that much better than the "classical"
--8<---------------cut here---------------start------------->8---
(let ((up #'previous-line) (down #'forward-line))
(when button
(setq up #'backward-button down #'forward-button))
;; ...
)
--8<---------------cut here---------------end--------------->8---
^ permalink raw reply [flat|nested] 4+ messages in thread
* RE: [External] : Re: new `pcase-let' syntax
2022-11-24 19:06 ` new `pcase-let' syntax Philip Kaludercic
@ 2022-11-24 20:28 ` Drew Adams
2022-11-26 16:01 ` Emanuel Berg
0 siblings, 1 reply; 4+ messages in thread
From: Drew Adams @ 2022-11-24 20:28 UTC (permalink / raw)
To: Philip Kaludercic, help-gnu-emacs
> > (pcase-let ((`(,up ,down)
> > (if button
> > `(,#'backward-button ,#'forward-button)
> > `(,#'previous-line ,#'forward-line)))) ...)
>
> In what sense is this new?
> I also get the feeling this is a hack for the sake of a hack. Is it
> really that much better than the "classical"
>
> (let ((up #'previous-line) (down #'forward-line))
> (when button (setq up #'backward-button down #'forward-button))...)
It gives you more opportunities to
use your `,', ``', and `)' keys?
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [External] : Re: new `pcase-let' syntax
2022-11-24 20:28 ` [External] : " Drew Adams
@ 2022-11-26 16:01 ` Emanuel Berg
0 siblings, 0 replies; 4+ messages in thread
From: Emanuel Berg @ 2022-11-26 16:01 UTC (permalink / raw)
To: help-gnu-emacs
Drew Adams wrote:
>>> (pcase-let ((`(,up ,down)
>>> (if button
>>> `(,#'backward-button ,#'forward-button)
>>> `(,#'previous-line ,#'forward-line)))) ...)
>>
>> [...] I also get the feeling this is a hack for the sake of
>> a hack. Is it really that much better than the "classical"
>>
>> (let ((up #'previous-line) (down #'forward-line))
>> (when button (setq up #'backward-button down #'forward-button))...)
>
> It gives you more opportunities to use your `,', ``', and
> `)' keys?
Okay, so how do you do this the classical way then?
(pcase-let*((`(,sail ,ho) (if t '(1 2) '(3 4)))
(msg (format "%s is %s" sail ho)) )
msg)
Also, it's better than `let' and `setq' because if you make
a typo setq creates a global variable, a bug that silently
enters your code.
Obviously if you gonna do typos all day ever day that's gonna
be a problem even with pcase-let LOL
--
underground experts united
https://dataswamp.org/~incal
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-11-26 16:01 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-23 10:26 new `pcase-let' syntax hotter than TikTok girls? Emanuel Berg
2022-11-24 19:06 ` new `pcase-let' syntax Philip Kaludercic
2022-11-24 20:28 ` [External] : " Drew Adams
2022-11-26 16:01 ` Emanuel Berg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).