all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Jean Louis <bugs@gnu.support>
To: help-gnu-emacs@gnu.org
Subject: Re: Does pcase need progn in if condition
Date: Sat, 22 May 2021 12:09:28 +0300	[thread overview]
Message-ID: <YKjKSPFFTrok4YYn@protected.localdomain> (raw)
In-Reply-To: <87k0nr9yb5.fsf@zoho.eu>

* Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> [2021-05-22 07:40]:
> sometimes one can put useful things there, e.g. `let', and
> avoid using progn for this reason
> 
> Yeah, progn is imbecile, almost. only, for some reason, prog1
> is cool, and prog2 is weird.
> 
> (if t 1 2 3 4) ; 1

`progn` returns the the last value:

(progn
  '(do-something)
  '(do-more)
  emacs-build-number) ⇒ 1

and is better looking then `let` when empty:

(let ()
  (message "hello")
  '(do-more)
  emacs-build-number) ⇒ 1

`prog1' is very handy as it will not return the last value but the value from 1st form:

Example is when you wish to return a value and after that informa a user like here below:

(cond ((= a 1) (do-something))
      (t (prog1 nil (message "Query shall be longer..."))))

After returning `report' it will message user about it. Maybe you
wish to return the status of a function and continue informing
user?

(defun function ()
  "Return REPORT"
  (prog1
      report
    (message report))) 

And `prog2' is more than this, it will return the value from 2nd
form, not third or first.

(prog2 
    (do-this-but-not-keep-return-value)
    (do-this-and-keep-and-return-value)
  (do-more-something-but-return-value-is-from-above))

-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

Sign an open letter in support of Richard M. Stallman
https://stallmansupport.org/



  reply	other threads:[~2021-05-22  9:09 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-21  9:25 Does pcase need progn in if condition pietru
2021-05-21 17:09 ` Christopher Dimech
2021-05-22  4:39   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-22  9:09     ` Jean Louis [this message]
2021-05-22  9:32       ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-22 11:08         ` Jean Louis
2021-05-22 11:37           ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-21 21:26 ` Emanuel Berg via Users list for the GNU Emacs text editor

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=YKjKSPFFTrok4YYn@protected.localdomain \
    --to=bugs@gnu.support \
    --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.