all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* The Paul Graham's "Revenge of the nerds" cummulator function and the solution in Emacs Lisp
@ 2009-06-08 21:23 Tiago Charters de Azevedo
  2009-06-09  6:40 ` Tassilo Horn
  0 siblings, 1 reply; 3+ messages in thread
From: Tiago Charters de Azevedo @ 2009-06-08 21:23 UTC (permalink / raw)
  To: help-gnu-emacs

I've been reading  Paul Graham's "Revenge of the nerds"
(http://www.paulgraham.com/icad.html) particularly  the appendix. It states the
problem of writing "a function that generates accumulators-- a function that takes
a number n, and returns a function that takes another number i and returns n
incremented by i. (That's incremented by, not plus. An accumulator has to
accumulate.)"

Should not the function foo in Common Lisp  work with Emacs Lisp?

(defun foo (n)
  (lambda (i)     
    (incf n i))) 

by setting

(setq a (foo 3))

followed  by 

(funcall a 1)

When I try to evaluate (funcall a 1) in Emacs (in emacs-lisp mode) I get:

Debugger entered--Lisp error: (void-variable n)
  (+ n i)
  (setq n (+ n i))
  (incf n i)
  (lambda (i) (incf n i))(1)
  funcall((lambda (i) (incf n i)) 1)
  eval((funcall a 1))
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp


It seems that emacs considers that n is a local variable because it is inside a
lambda expression?

Is this a bug? Or I'm missing something?

Thanks

tca

-- 
URL: http://www.diale.org
Email: tca@cii.fc.ul.pt

Phone: +351 21 7904874 (internal: 4274)
Fax: +351 21 795 4288




^ permalink raw reply	[flat|nested] 3+ messages in thread
[parent not found: <mailman.243.1244499530.2239.help-gnu-emacs@gnu.org>]

end of thread, other threads:[~2009-06-09  6:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-08 21:23 The Paul Graham's "Revenge of the nerds" cummulator function and the solution in Emacs Lisp Tiago Charters de Azevedo
2009-06-09  6:40 ` Tassilo Horn
     [not found] <mailman.243.1244499530.2239.help-gnu-emacs@gnu.org>
2009-06-09  0:27 ` Barry Margolin

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.