From: Emanuel Berg <embe8573@student.uu.se>
To: help-gnu-emacs@gnu.org
Subject: Re: if vs. when vs. and: style question
Date: Fri, 27 Mar 2015 01:31:05 +0100 [thread overview]
Message-ID: <87bnjf8enq.fsf@debian.uxu> (raw)
In-Reply-To: 828c5115-a61b-4c42-b6d5-7bdcc6a691f0@googlegroups.com
Rusi <rustompmody@gmail.com> writes:
> Pattern-matching in modern FPLs would be more
> appropriate
>
> foo [] = bla foo (x:xs) = ble
>
> Can always be translated into
>
> foo l = if null l then bla else ble
>
> The reverse is of course not always possible But
> when pattern matching works its preferable to
> 'all-powerful' if-then-else
>
> Notice also that pattern matching is a mix of 3
> features that are usually separate -- 1. if 2.
> let 3. car/cdr ie selectors Separately those 3 are
> strictly more powerful than pattern matching And
> thats what makes pattern matching preferable (when
> it applies)
Aha - even more of the old functional programming
hysteria! Haskell, pattern matching... - are you sure
you are in the right newsgroup?
There is absolutely no rule that says "weak"
constructs are preferable, and especially not when
they are weak because they incorporate data that is
otherwise (in the "strong" version) readily available
to edit *as data* - i.e., exactly what it is.
Compare:
(defun insert-hello ()
(interactive)
(insert-char ?h)
(insert-char ?e)
(insert-char ?l)
(insert-char ?l)
(insert-char ?o) )
(insert-hello)
vs.
(insert "hello")
Instead, the way to think is that the code should talk
both ways: it should tell the machine to do the
correct computation, all the while while showing and
indicating purpose to the person who writes and/or
reads the code!
For example, remember this example:
(1+ data)
vs.
(+ 1 data)
The "weak" vs. "strong" is the wrong way to think
about it.
In a discrete context, for example when iterating
a data structure or doing recursion, the `1+'
is preferable.
When just adding two data items, of which one happens
to be 1, the (+ 1 data) is better.
Perhaps that '1' will soon change. Big part of the
Lisp appeal is that it is so easy to change (tweak)
everything as you go along, in the light of experience
(which is often very recent), and then it goes on.
Or perhaps the '1' appears again in some other place
in the code, and when it does, the coder stops to
think, and it is concluded that it is the same data
item as the first one (ha) - i.e., both should be
replaced by an binding or variable...
--
underground experts united
http://user.it.uu.se/~embe8573
next prev parent reply other threads:[~2015-03-27 0:31 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-23 22:53 if vs. when vs. and: style question Marcin Borkowski
2015-03-24 0:15 ` Pascal J. Bourguignon
2015-03-24 0:34 ` Drew Adams
2015-03-24 0:22 ` Drew Adams
[not found] ` <mailman.2648.1427156603.31049.help-gnu-emacs@gnu.org>
2015-03-24 2:28 ` Emanuel Berg
2015-03-24 6:12 ` Rusi
2015-03-25 0:21 ` Emanuel Berg
2015-03-25 0:20 ` Pascal J. Bourguignon
2015-03-25 2:44 ` Emanuel Berg
2015-03-25 2:51 ` Rusi
2015-03-25 7:12 ` Pascal J. Bourguignon
2015-03-25 14:02 ` Rusi
2015-03-25 14:40 ` Stefan Monnier
2015-03-25 14:52 ` if vs. when vs. and: style question now Unicode Dan Espen
2015-03-25 15:24 ` Rusi
2015-03-25 15:46 ` Dan Espen
2015-03-25 16:02 ` Rusi
2015-03-25 17:16 ` Dan Espen
2015-03-28 17:55 ` Emanuel Berg
2015-03-25 17:46 ` Rusi
2015-03-25 15:22 ` if vs. when vs. and: style question Pascal J. Bourguignon
2015-03-25 15:37 ` Rusi
2015-03-29 1:17 ` Emanuel Berg
2015-03-25 15:45 ` Rusi
2015-03-29 1:03 ` Emanuel Berg
2015-03-29 2:41 ` Rusi
2015-03-29 3:11 ` Rusi
2015-03-29 14:05 ` Óscar Fuentes
2015-03-29 16:00 ` Drew Adams
2015-03-30 1:55 ` Óscar Fuentes
[not found] ` <mailman.2998.1427680540.31049.help-gnu-emacs@gnu.org>
2015-03-30 2:25 ` Rusi
2015-03-29 18:27 ` Pascal J. Bourguignon
2015-03-30 0:09 ` Stefan Monnier
2015-03-30 1:33 ` Óscar Fuentes
2015-03-30 1:50 ` Stefan Monnier
2015-03-30 9:44 ` tomas
2015-03-30 11:46 ` Óscar Fuentes
[not found] ` <mailman.3016.1427716011.31049.help-gnu-emacs@gnu.org>
2015-03-30 13:03 ` Pascal J. Bourguignon
2015-03-30 14:18 ` Stefan Monnier
2015-03-30 15:21 ` Marcin Borkowski
2015-03-30 15:31 ` Óscar Fuentes
[not found] ` <mailman.3031.1427729518.31049.help-gnu-emacs@gnu.org>
2015-03-30 17:15 ` Pascal J. Bourguignon
[not found] ` <mailman.3030.1427728904.31049.help-gnu-emacs@gnu.org>
2015-03-31 6:26 ` Reality and Proofs (was if vs. when vs. and: style question) Rusi
[not found] ` <mailman.3010.1427708687.31049.help-gnu-emacs@gnu.org>
2015-03-30 12:59 ` if vs. when vs. and: style question Pascal J. Bourguignon
[not found] ` <mailman.2972.1427637975.31049.help-gnu-emacs@gnu.org>
2015-03-30 1:55 ` Rusi
[not found] ` <mailman.2749.1427294481.31049.help-gnu-emacs@gnu.org>
2015-03-25 15:33 ` Rusi
2015-03-25 15:36 ` Pascal J. Bourguignon
2015-03-25 16:06 ` Drew Adams
[not found] ` <mailman.2751.1427299594.31049.help-gnu-emacs@gnu.org>
2015-03-25 16:19 ` Rusi
2015-03-25 16:23 ` Rusi
2015-03-29 1:24 ` Emanuel Berg
2015-03-25 17:02 ` Dan Espen
2015-03-25 18:23 ` Drew Adams
[not found] ` <mailman.2758.1427307846.31049.help-gnu-emacs@gnu.org>
2015-03-25 18:52 ` Dan Espen
2015-03-26 9:47 ` Gian Uberto Lauri
2015-03-29 23:06 ` Emanuel Berg
[not found] ` <mailman.2799.1427363259.31049.help-gnu-emacs@gnu.org>
2015-03-26 10:24 ` Pascal J. Bourguignon
2015-03-26 10:28 ` Pascal J. Bourguignon
2015-03-26 10:47 ` Unicode in source (Was Re: if vs. when vs. and: style question) Gian Uberto Lauri
[not found] ` <mailman.2802.1427366873.31049.help-gnu-emacs@gnu.org>
2015-03-26 15:54 ` Pascal J. Bourguignon
2015-03-26 17:07 ` Gian Uberto Lauri
[not found] ` <mailman.2824.1427389660.31049.help-gnu-emacs@gnu.org>
2015-03-26 17:16 ` Pascal J. Bourguignon
2015-03-26 10:43 ` if vs. when vs. and: style question Gian Uberto Lauri
2015-03-26 13:02 ` Pascal J. Bourguignon
2015-04-01 22:03 ` Emanuel Berg
2015-04-01 22:24 ` Emanuel Berg
2015-03-25 19:17 ` Pascal J. Bourguignon
2015-03-25 20:31 ` Drew Adams
2015-03-25 22:21 ` Richard Wordingham
2015-03-25 23:21 ` Drew Adams
2015-03-25 23:52 ` Richard Wordingham
[not found] ` <mailman.2782.1427325697.31049.help-gnu-emacs@gnu.org>
2015-03-26 3:02 ` Rusi
2015-03-26 10:01 ` Gian Uberto Lauri
[not found] ` <mailman.2800.1427364117.31049.help-gnu-emacs@gnu.org>
2015-03-26 13:00 ` Rusi
2015-03-26 13:28 ` Gian Uberto Lauri
[not found] ` <mailman.2809.1427376497.31049.help-gnu-emacs@gnu.org>
2015-03-26 15:51 ` Pascal J. Bourguignon
2015-03-26 16:21 ` Gian Uberto Lauri
[not found] ` <mailman.2779.1427322080.31049.help-gnu-emacs@gnu.org>
2015-04-01 2:31 ` Emanuel Berg
2015-04-01 3:03 ` Rusi
2015-04-01 14:29 ` Pascal J. Bourguignon
2015-04-01 14:57 ` Rusi
[not found] ` <mailman.2771.1427315503.31049.help-gnu-emacs@gnu.org>
2015-03-26 4:23 ` Rusi
2015-03-25 19:20 ` Pascal J. Bourguignon
2015-03-26 11:37 ` Alan Schmitt
2015-03-30 1:20 ` Emanuel Berg
2015-03-30 2:43 ` Pascal J. Bourguignon
2015-03-30 3:12 ` Rusi
2015-03-25 17:49 ` Pascal J. Bourguignon
2015-03-25 18:09 ` Eli Zaretskii
[not found] ` <mailman.2756.1427307016.31049.help-gnu-emacs@gnu.org>
2015-03-25 21:27 ` Rusi
2015-03-25 21:32 ` Rusi
2015-03-31 16:49 ` Emanuel Berg
2015-03-31 17:22 ` Rusi
2015-04-01 18:08 ` Emanuel Berg
2015-04-01 20:01 ` Pascal J. Bourguignon
2015-03-27 3:54 ` Emanuel Berg
2015-03-27 7:59 ` Gian Uberto Lauri
2015-03-27 8:06 ` tomas
2015-03-27 8:11 ` Gian Uberto Lauri
2015-03-27 9:20 ` tomas
2015-03-27 9:31 ` Gian Uberto Lauri
[not found] ` <mailman.2860.1427443603.31049.help-gnu-emacs@gnu.org>
2015-03-27 12:41 ` Pascal J. Bourguignon
2015-03-27 13:05 ` tomas
[not found] ` <mailman.2875.1427461540.31049.help-gnu-emacs@gnu.org>
2015-03-27 13:35 ` Rusi
2015-03-27 12:34 ` Pascal J. Bourguignon
2015-03-27 0:49 ` Emanuel Berg
2015-03-27 7:53 ` Gian Uberto Lauri
[not found] ` <mailman.2856.1427442800.31049.help-gnu-emacs@gnu.org>
2015-03-27 8:56 ` Joost Kremers
2015-03-27 12:19 ` Pascal J. Bourguignon
2015-03-27 14:20 ` Rusi
2015-03-25 2:35 ` Rusi
2015-03-27 0:31 ` Emanuel Berg [this message]
2015-03-27 21:27 ` Emanuel Berg
2015-03-27 22:54 ` Pascal J. Bourguignon
2015-03-28 1:16 ` Rusi
2015-03-28 12:47 ` Pascal J. Bourguignon
2015-03-24 15:18 ` Pascal J. Bourguignon
2015-03-25 0:44 ` Emanuel Berg
2015-03-24 7:21 ` Thien-Thi Nguyen
[not found] ` <mailman.2659.1427181547.31049.help-gnu-emacs@gnu.org>
2015-03-25 0:34 ` Emanuel Berg
[not found] <mailman.2645.1427151196.31049.help-gnu-emacs@gnu.org>
2015-03-23 23:19 ` Emanuel Berg
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=87bnjf8enq.fsf@debian.uxu \
--to=embe8573@student.uu.se \
--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.