all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Drew Adams" <drew.adams@oracle.com>
To: "'Teemu Likonen'" <tlikonen@iki.fi>, <vmarko@ipb.ac.rs>
Cc: help-gnu-emacs@gnu.org
Subject: RE: Several beginner-questions
Date: Wed, 27 Jul 2011 06:57:25 -0700	[thread overview]
Message-ID: <6F039EEDC6B84BE39B761765CAB04249@us.oracle.com> (raw)
In-Reply-To: <87d3gw1aoi.fsf@mithlond.arda>

> > [...] I'm fairly new to Emacs, and Lisp is also somewhat a 
> > mistery for me (although I am familiar with the concepts
> > of functional programming in general).
> 
> Emacs Lisp, and other popular Lisps as well, are multi-paradigm
> languages. They support many paradigms but do not force any 
> of them. For example, imperative and functional programming is
> supported. It's a common myth that Lisps are (purely) functional
> languages. They are not.
> 
> In my experience the first big difference for a Lisp newbie is that
> there are no separate statements and expressions; there are only
> expressions. Another thing to realize is that Lisp code is 
> actually Lisp data (trees of cons cells).

Just to add a little to what Teemu noted (which is correct):

1. Learn about Lisp symbols and conses (list structure). If you understand those
two you'll get through 80% of the learning gotchas. And no, don't suppose that
you understand Lisp conses because you understand lists in Haskell or Prolog.
And yes, there is more to symbols than meets the eye.

2. You're better off forgetting altogether about Lisp being a functional
language. In the modern (since the 1970s) sense, a functional language is
typically pure (no side effects, referentially transparent), typically lazy, and
typically cleanly higher order. Lisp is not lambda calculus.

Lisp (including Scheme) is imperative through and through, regardless of what
anyone might say about being able to program functionally using a subset of it.

Lisp is to a functional language what Mock Lisp was to Lisp: it might look like
it, and it might occasionally quack like it, but it's not the same duck at all.




  reply	other threads:[~2011-07-27 13:57 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-07-24 22:22 Several beginner-questions Marko Vojinovic
2011-07-25 15:06 ` suvayu ali
2011-07-27  1:05   ` Marko Vojinovic
2011-07-27  1:36     ` suvayu ali
2011-08-15  0:36       ` Ken Goldman
2011-08-15  0:39     ` Ken Goldman
2011-07-25 15:14 ` Eli Zaretskii
2011-07-27  2:57   ` Marko Vojinovic
2011-07-27  5:40     ` Eli Zaretskii
2011-07-28 22:07       ` Marko Vojinovic
2011-07-29  6:08         ` Eli Zaretskii
2011-07-29 18:07           ` Vijay Lakshminarayanan
2011-07-27  6:48     ` Teemu Likonen
2011-07-27 13:57       ` Drew Adams [this message]
  -- strict thread matches above, loose matches on Subject: below --
2011-07-23  7:13 Marko Vojinovic

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=6F039EEDC6B84BE39B761765CAB04249@us.oracle.com \
    --to=drew.adams@oracle.com \
    --cc=help-gnu-emacs@gnu.org \
    --cc=tlikonen@iki.fi \
    --cc=vmarko@ipb.ac.rs \
    /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.