From: Drew Adams <drew.adams@oracle.com>
To: Sacha Chua <sacha@sachachua.com>, emacs-tangents@gnu.org
Subject: RE: 2016-04-18 Emacs News
Date: Mon, 18 Apr 2016 09:19:43 -0700 (PDT) [thread overview]
Message-ID: <29224df4-fa4c-48d7-b5f5-9b366bbd8bdc@default> (raw)
In-Reply-To: <87wpnvymvt.fsf@sachachua.com>
> A nice and clear summary of Emacs Lisp (Reddit)
> http://www.fincher.org/tips/Languages/Emacs.shtml
Hm. It's generally good to see such summaries. But
this one is not as nice and clear as it might be, IMO.
It is also somewhat out of date.
(set 'fname "Mitch")
Not a great example of what `set' is used for. If this
were a common use case then we would need only `setq'.
(setq fname "Mitch")
Doesn't bring much attention to the fact that the second
arg is evaluated and its value is used. IOW, something
like a string, which is self-quoting, is not the best
thing to show in such an example.
(list 'a 'x "asdf" 6) => (list a x "asdf" 6)
Should be => (a x "asdf" 6) - no "list". But even that
would not bring much attention to the fact that each arg
is evaluated.
(sort '(5 3 9 27) '<) => (3 5 9 27)
Well yes, but, especially if introducing this to newbies,
the destructive nature of `sort' is really important to
point out.
(concat "I " "went to " "the woods ")=> "I went to the woods "
Might be good to use some arguments that are characters
and lists of chars - especially characters.
(length "I went to the woods ")=> 20
Yes, but `string-width' is typically more appropriate for
strings (and there is `string-bytes'). A more typical
`length' use case would be with a list or a vector.
(aref s i)
returns the ith char (0 based)
(aref "abcd" 2)=> 99
It's not about counting characters. `aref' is for any
array, not just a string. Same for `aset' description.
Section "Logical functions (and, or, not, eq)" does not
say what constitutes a "true" or a "false" value. In
particular, it does not say that non-nil is treated as
true by most predicates (including `and', `or', and `not').
"equal takes two args and tests if the values are equal"
Doesn't say what it means for two values to be "equal".
Section "Function Template" is really a command-definition
template.
"Commands and functions can also have hooks. These are
created using 'defadvice'."
Kind of. But they are not called "hooks" in Emacs (e.g.
in the doc). And `defadvice' is now deprecated, in favor
of the new advice system.
`let': "uninitialized variables may also be used... This
creates temporary variables "c" and "d", but assigns no
value."
That is wrong - vars `c' and `d' are bound to nil.
"let* ;; forces sequential execution"
No, sequential (i.e., dependent) bindings. Execution of
the body of `let' is also sequential.
"if the documentation string begins with a "*", the variable
is user definable with the M-xset-variable command"
No. This behavior was (unfortunately, IMO) removed long ago.
Introducing `reduce', regexps, and macros is too advanced,
and too unexplained, for this high-level intro. It can
erroneously give the impression of authority or expertise.
It might be different if (a) these things were actually
described/explained here and (b) there was not so much
that is wrong or misleading in the basic stuff presented.
"defunst - defunst works like defun but "inlines" the function.
Works like "Inline" in C++."
No. `defunst' does not exist in Emacs Lisp. `defsubst'
was presumably meant.
`interactive': "r - the hilighted region"
No; it is the region, active (highlighted) or not.
`C-h a' is not `command-apropos' but `apropos-command'.
`C-h C-k' is not `Info-goto-emacs-key-command-node'.
`E-!' should be `M-!' (or `ESC !').
The link to the W3 web browser is broken. And `eww' might
be a better choice now (?).
The commands bound to `C-x (', `C-x )', and `C-x e' have been
different for years now (kmacro was introduced in Emacs 22!).
In sum, again, it's good that people post such summaries, but
they can also be harmful/misleading. If they are posted to
a community place such as Emacs Wiki then they at least have
a better chance of getting corrected and updated.
And I really recommend _asking Emacs_ itself, including the
manuals. There is a good intro manual to learning Emacs Lisp
that comes with Emacs.
next prev parent reply other threads:[~2016-04-18 16:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-18 15:09 2016-04-18 Emacs News Sacha Chua
2016-04-18 16:19 ` Drew Adams [this message]
2016-04-18 16:48 ` Sacha Chua
2016-04-25 18:08 ` Mitch Fincher
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=29224df4-fa4c-48d7-b5f5-9b366bbd8bdc@default \
--to=drew.adams@oracle.com \
--cc=emacs-tangents@gnu.org \
--cc=sacha@sachachua.com \
/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.