all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: pjb@informatimago.com (Pascal J. Bourguignon)
To: help-gnu-emacs@gnu.org
Subject: Re: One more question about elisp
Date: Sun, 08 Nov 2009 17:01:06 +0100	[thread overview]
Message-ID: <87aayx9fb1.fsf@galatea.local> (raw)
In-Reply-To: m2vdhl9hch.fsf@gmail.com

Francis Moreau <francis.moro@gmail.com> writes:

> tomas@tuxteam.de writes:
>
> [...]
>
>>
>> You have been pointed to "defstruct" already. From it info page:
>
> I realized this is not part of elips but clisp, that's why I missed it.

There is no programming language named clisp.

There is one named Common Lisp, which has several implementations, one
of which is called clisp.  But "clisp" is not the name of a
programming language, it's the name of a program.


> The weird thing (for now) is that "defstruct" is not very used in the
> source code of emacs.
>
> Anyway, I'll keep trying to learn the basic concept of elisp.

THE basic concept of all the languages in the lisp family, is that of
the uniform syntax for data and code (symbolic expressions, sexp).

This allows to easily write programs to transform programs, since
programs are normal lisp data.  Hence the notion of macro.

This allows to easily extend the language to fit your needs, since the
new operators you can implement with macros are indistinguishable from
primitive operators.


Apart from that, the exact primitive data types provided by a lisp
system is rather irrelevant, given a few user level libraries
providing the macros needed to define data abstractions you want.  And
if these libraries don't exist, no problem, you can easily write them
yourself.  In anycase, in a sizeable lisp program it is expected that
you write yourself your own macros to define your own, application
specific, language.


So, yes, structures don't exist in the bare emacs lisp language.  But
this doesn't matter, since there is the cl package that provides a
defstruct macro.  If this package didn't exist, it wouldn't matter
either, since you could easily write such a defstruct macro yourself.

And in any case it doesn't matter, since in your application you'll be
expected to define your own macro to define your own entities. (You
may base your macro on defstruct, or you may base it on lower level
emacs lisp vectors, or on cons cells, or whatever, it just does not
matter).


Read SICP!

         Structure and Interpretation of Computer Programs
         http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html
         http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/
         http://www.codepoetics.com/wiki/index.php?title=Topics:SICP_in_other_languages
         http://eli.thegreenplace.net/category/programming/lisp/sicp/
         http://www.neilvandyke.org/sicp-plt/

-- 
__Pascal Bourguignon__


  reply	other threads:[~2009-11-08 16:01 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-06 16:46 One more question about elisp Francis Moreau
2009-11-06 16:55 ` Joost Kremers
2009-11-06 20:59   ` Francis Moreau
2009-11-06 21:28     ` Pascal J. Bourguignon
2009-11-07  1:42     ` Stefan Monnier
2009-11-08 15:20       ` Francis Moreau
2009-11-08 16:12         ` Pascal J. Bourguignon
2009-11-09 21:14           ` Francis Moreau
2009-11-08 19:53         ` Stefan Monnier
2009-11-06 20:02 ` Xah Lee
2009-11-06 21:05   ` Francis Moreau
2009-11-06 21:13     ` David Kastrup
2009-11-07  1:40     ` LanX
2009-11-07  2:31       ` Barry Margolin
2009-11-07 14:41       ` Francis Moreau
2009-11-07 17:39         ` Pascal J. Bourguignon
2009-11-07 18:10         ` LanX
2009-11-08  9:53         ` tomas
     [not found]         ` <mailman.10267.1257674530.2239.help-gnu-emacs@gnu.org>
2009-11-08 15:17           ` Francis Moreau
2009-11-08 16:01             ` Pascal J. Bourguignon [this message]
2009-11-09 20:43               ` Francis Moreau
2009-11-08 17:06             ` tomas
2009-11-07  2:50     ` Giorgos Keramidas

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=87aayx9fb1.fsf@galatea.local \
    --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.
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.