From: Rusi <rustompmody@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: Possible to conditionally bind variable?
Date: Thu, 11 Sep 2014 20:55:46 -0700 (PDT) [thread overview]
Message-ID: <4297420c-f2f5-4675-bcc5-58742a253ef1@googlegroups.com> (raw)
In-Reply-To: <mailman.8684.1410438907.1147.help-gnu-emacs@gnu.org>
On Thursday, September 11, 2014 6:04:33 PM UTC+5:30, Stefan Monnier wrote:
> > (defun go-or-make-agenda (&optional new-frame)
> > (interactive "P")
> > (let ((buffer "\*Org Agenda\*")
> > (some-other-buffer "*scratch*")
> > (my-switch-function (if new-frame ;; is there some way to do this?
> > 'switch-to-buffer-other-frame
> > 'switch-to-buffer)))
> > (if (get-buffer buffer)
> > (funcall my-switch-function buffer)
> > (funcall my-switch-function some-other-buffer))))
> Aka
> (defun go-or-make-agenda (&optional new-frame)
> (interactive "P")
> (let ((buffer "\*Org Agenda\*")
> (some-other-buffer "*scratch*")
> (my-switch-function (if new-frame ;; is there some way to do this?
> 'switch-to-buffer-other-frame
> 'switch-to-buffer)))
> (funcall my-switch-function
> (if (get-buffer buffer) buffer some-other-buffer))))
> Aka
> (defun go-or-make-agenda (&optional new-frame)
> (interactive "P")
> (let ((buffer "\*Org Agenda\*")
> (some-other-buffer "*scratch*"))
> (funcall (if new-frame 'switch-to-buffer-other-frame 'switch-to-buffer)
> (if (get-buffer buffer) buffer some-other-buffer))))
Seeing this beautiful code, cant help making the remark:
This is called functional programming; guys like Stefan do it
guys like talk about it.
Here is some more talk -- what Stefan has demoed above is one of the
many cases outlined there:
http://blog.languager.org/2012/10/functional-programming-lost-booty.html
next prev parent reply other threads:[~2014-09-12 3:55 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-11 11:11 Possible to conditionally bind variable? Tory S. Anderson
2014-09-11 12:24 ` Nicolas Richard
2014-09-11 12:34 ` Stefan Monnier
2014-09-11 12:43 ` Tory S. Anderson
2014-09-11 13:54 ` Nicolas Richard
[not found] ` <mailman.8690.1410443522.1147.help-gnu-emacs@gnu.org>
2014-09-12 2:56 ` Rusi
[not found] ` <mailman.8684.1410438907.1147.help-gnu-emacs@gnu.org>
2014-09-12 3:55 ` Rusi [this message]
2014-09-12 3:59 ` Rusi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4297420c-f2f5-4675-bcc5-58742a253ef1@googlegroups.com \
--to=rustompmody@gmail.com \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.