From: "Pascal J. Bourguignon" <pjb@informatimago.com>
To: help-gnu-emacs@gnu.org
Subject: Re: why are there [v e c t o r s] in Lisp?
Date: Sat, 17 Oct 2015 18:15:47 +0200 [thread overview]
Message-ID: <87si59bhe4.fsf@kuiper.lan.informatimago.com> (raw)
In-Reply-To: mailman.511.1445095810.7904.help-gnu-emacs@gnu.org
Emanuel Berg <embe8573@student.uu.se> writes:
> "Pascal J. Bourguignon" <pjb@informatimago.com>
> writes:
>
>> Obviously not.
>>
>> And linear algebra deals with matrices and tensors
>> etc, which are arrays!
>
> They are not called arrays but matrices so there is no
> confusing the data structure array with the linear
> algebra concept matrix.
Nobody but you is confusing arrays with matrices, since they're not the
same thing.
vectors are arrays.
matrices are arrays.
tensors are arrays.
But you don't have arrays when you only have vectors (like in C).
Notice how in CL, there's a distinction between a 3-vector and a
1,3-matrix, or a 1,1,3-array:
cl-user> (make-array '(3))
#(0 0 0)
cl-user> (make-array '(1 3))
#2A((0 0 0))
cl-user> (make-array '(1 1 3))
#3A(((0 0 0)))
Or similary, there's a distinction between a 3,4-matrix and a
1,3,4-array:
cl-user> (make-array '(3 4))
#2A((0 0 0 0) (0 0 0 0) (0 0 0 0))
cl-user> (make-array '(1 3 4))
#3A(((0 0 0 0) (0 0 0 0) (0 0 0 0)))
cl-user>
It's a trivial notion of subclass/superclass, if you had any object
oriented knowledge.
That said, while CL distinguishes a vector subclass of arrays, it
doesn't name a matrix subclass.
In emacs lisp, since we don't have arrays, only vectors, we have to use
tricks like in C to implement matrices or tensors:
(type-of (make-array '(2 3))) --> vector
Happily, emacs lisp helps a little, creating a vector of vector:
(make-array '(2 3)) --> [[nil nil nil] [nil nil nil]]
(aref (make-array '(2 3)) 0) --> [nil nil nil]
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
next prev parent reply other threads:[~2015-10-17 16:15 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-16 1:12 why are there [v e c t o r s] in Lisp? Emanuel Berg
2015-10-17 1:11 ` Aurélien Aptel
2015-10-17 4:22 ` Emanuel Berg
2015-10-17 7:58 ` Jude DaShiell
2015-10-19 16:33 ` Nick Dokos
[not found] ` <mailman.490.1445055179.7904.help-gnu-emacs@gnu.org>
2015-10-17 15:09 ` Pascal J. Bourguignon
[not found] ` <mailman.488.1445044303.7904.help-gnu-emacs@gnu.org>
2015-10-17 2:22 ` Pascal J. Bourguignon
2015-10-17 4:56 ` Emanuel Berg
2015-10-17 5:49 ` Barry Margolin
2015-10-17 15:04 ` Emanuel Berg
[not found] ` <mailman.506.1445093727.7904.help-gnu-emacs@gnu.org>
2015-10-17 15:20 ` Pascal J. Bourguignon
2015-10-17 15:38 ` Emanuel Berg
[not found] ` <mailman.511.1445095810.7904.help-gnu-emacs@gnu.org>
2015-10-17 16:01 ` Javier
2015-10-17 16:03 ` Javier
2015-10-17 16:34 ` Pascal J. Bourguignon
2015-10-17 21:18 ` Emanuel Berg
2015-10-17 16:15 ` Pascal J. Bourguignon [this message]
2015-10-17 21:37 ` Emanuel Berg
2015-10-17 15:18 ` Pascal J. Bourguignon
[not found] <mailman.428.1444957396.7904.help-gnu-emacs@gnu.org>
2015-10-16 1:51 ` Pascal J. Bourguignon
2015-10-16 2:31 ` Emanuel Berg
2015-10-16 2:29 ` Random832
2015-10-16 2:51 ` Emanuel Berg
2015-10-16 2:56 ` Random832
2015-10-16 23:30 ` Emanuel Berg
[not found] ` <mailman.482.1445037713.7904.help-gnu-emacs@gnu.org>
2015-10-17 1:55 ` Pascal J. Bourguignon
2015-10-17 4:47 ` Emanuel Berg
[not found] ` <mailman.494.1445057637.7904.help-gnu-emacs@gnu.org>
2015-10-17 15:25 ` Pascal J. Bourguignon
2015-10-17 21:12 ` Emanuel Berg
[not found] ` <mailman.519.1445115776.7904.help-gnu-emacs@gnu.org>
2015-10-18 1:08 ` Pascal J. Bourguignon
[not found] ` <mailman.432.1444964227.7904.help-gnu-emacs@gnu.org>
2015-10-16 3:57 ` Pascal J. Bourguignon
2015-10-16 4:17 ` Random832
[not found] ` <mailman.434.1444970033.7904.help-gnu-emacs@gnu.org>
2015-10-16 5:16 ` Pascal J. Bourguignon
[not found] ` <mailman.429.1444962165.7904.help-gnu-emacs@gnu.org>
2015-10-16 3:31 ` Pascal J. Bourguignon
2015-10-16 23:46 ` Emanuel Berg
[not found] ` <mailman.483.1445038647.7904.help-gnu-emacs@gnu.org>
2015-10-17 2:04 ` Pascal J. Bourguignon
2015-10-17 4:40 ` Random832
2015-10-17 5:00 ` Emanuel Berg
2015-10-17 4:40 ` Emanuel Berg
2015-10-17 5:56 ` Barry Margolin
2015-10-17 15:06 ` Emanuel Berg
[not found] ` <mailman.491.1445056308.7904.help-gnu-emacs@gnu.org>
2015-10-17 5:53 ` Barry Margolin
2015-10-17 15:16 ` Pascal J. Bourguignon
2015-10-17 21:06 ` Emanuel Berg
[not found] ` <mailman.518.1445115463.7904.help-gnu-emacs@gnu.org>
2015-10-18 1:07 ` Pascal J. Bourguignon
2015-10-18 12:32 ` Emanuel Berg
[not found] ` <mailman.551.1445171034.7904.help-gnu-emacs@gnu.org>
2015-10-18 12:55 ` Pascal J. Bourguignon
2015-10-18 14:28 ` Emanuel Berg
2015-10-18 21:17 ` Robert Thorpe
[not found] ` <mailman.557.1445177952.7904.help-gnu-emacs@gnu.org>
2015-10-18 19:48 ` Barry Margolin
2015-10-18 21:25 ` Emanuel Berg
2015-10-18 21:39 ` Random832
2015-10-19 0:46 ` Pascal J. Bourguignon
2015-10-16 13:32 ` Barry Margolin
2015-10-16 23:47 ` Emanuel Berg
[not found] <mailman.581.1445203060.7904.help-gnu-emacs@gnu.org>
2015-10-19 0:45 ` Pascal J. Bourguignon
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=87si59bhe4.fsf@kuiper.lan.informatimago.com \
--to=pjb@informatimago.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.
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).