unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Jean Louis <bugs@gnu.support>
To: help-gnu-emacs@gnu.org
Subject: Re: Org to Markdown programmatically
Date: Wed, 5 May 2021 23:41:15 +0300	[thread overview]
Message-ID: <YJMC69IkNPzvoO4E@protected.localdomain> (raw)
In-Reply-To: <8735v17yk4.fsf@zoho.eu>

* Emanuel Berg via Users list for the GNU Emacs text editor <help-gnu-emacs@gnu.org> [2021-05-05 22:48]:
> For example:
> 
> (require 'cl)
> 
> (cl-loop for (x y) in '((1 2) (3 4) (5 6))
>          do (message "%d + %d = %d" x y (+ x y)) )
> 
> 1 + 2 = 3
> 3 + 4 = 7
> 5 + 6 = 11

Sure. If I look in my Common Lisp directory, I have 94 occurences
of `loop' there. Various complex things. But I try not to over
load things.

The `cl' library is now in "obsolete" directory and function
`cl-loop' is not obsolete. So I guess maybe you will not need
`require', it should work, it is now in `cl-macs.el'
file. Package describes it as extensions to Emacs Lisp for
compatibility reasons.

Same with `while':

(let ((list '((1 2) (3 4) (5 6))))
  (while list
    (let* ((pair (pop list))
	   (x (car pair))
	   (y (cadr pair)))
      (message "%d + %d = %d" x y (+ x y)))))

I would like above rather than this one below, as I don't seek CL
compatibility:

(cl-loop for (x y) in '((1 2) (3 4) (5 6))
         do (message "%d + %d = %d" x y (+ x y)))

Or with `mapc':

(mapc (lambda (pair)
	(let ((x (car pair))
	      (y (cadr pair)))
	  (message "%d + %d = %d" x y (+ x y))))
      '((1 2) (3 4) (5 6)))

And then benchmark:

(benchmark 100000000
	   (let ((list '((1 2) (3 4) (5 6))))
	     (while list
	       (let* ((pair (pop list))
		      (x (car pair))
		      (y (cadr pair)))
		 (message "%d + %d = %d" x y (+ x y)))))) ⇒ "Elapsed time: 5.520809s"

(benchmark 100000000
	   (cl-loop for (x y) in '((1 2) (3 4) (5 6))
		    do (message "%d + %d = %d" x y (+ x y)))) ⇒ "Elapsed time: 5.784922s"

(benchmark 100000000
	   (let ()
	     (mapc (lambda (pair)
		     (let ((x (car pair))
			   (y (cadr pair)))
		       (message "%d + %d = %d" x y (+ x y))))
		   '((1 2) (3 4) (5 6)))
	     nil)) ⇒ "Elapsed time: 5.158536s"

I thint that benchmark says nothing much, the tests are vague and
they are about as fast. `while' is probably slowest.

`while' is giving me more clarity.

Yet your example still did not replace this function below, there
are no list of lists inside:

(defun outline-highlight-keywords ()
  (interactive)
  (let ((my-keywords '("TODO" hi-yellow
		       "DONE" hi-green
		       "URGENT" hi-red-b)))
    (while my-keywords
      (let ((keyword (pop my-keywords))
	    (highlight (pop my-keywords)))
	(highlight-regexp keyword highlight)))))

-- 
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/
https://rms-support-letter.github.io/




  reply	other threads:[~2021-05-05 20:41 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-04  8:48 Org to Markdown programmatically Jean Louis
2021-05-04  9:04 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-04 10:09   ` Colin Baxter
2021-05-04 17:29     ` Jean Louis
2021-05-04 20:23       ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05  6:56         ` Jean Louis
2021-05-05  7:20           ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05  8:34             ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 11:58             ` Jean Louis
2021-05-05 15:36               ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 19:47                 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 20:41                   ` Jean Louis [this message]
2021-05-05 20:58                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 21:14                       ` Jean Louis
2021-05-05 20:47                   ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-05-05 21:02                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 21:11                     ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 21:46                       ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-05-05 22:03                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 23:38                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 23:54                           ` Stefan Monnier via Users list for the GNU Emacs text editor
2021-05-05 21:50                       ` Jean Louis
2021-05-05 21:56                         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 22:56                           ` Jean Louis
2021-05-05 23:10                             ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 20:11                 ` Jean Louis
2021-05-05 20:38                   ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 20:54                     ` Jean Louis
2021-05-05 21:07                       ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 21:33                         ` Jean Louis
2021-05-05 21:42                           ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-05 22:51                             ` Jean Louis
2021-05-05 23:05                               ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-06  3:46                                 ` Jean Louis
2021-05-22  8:26     ` Jean Louis

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=YJMC69IkNPzvoO4E@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.
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).