[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [PATCH] Make lexical eval default for elisp src blocks

From: John Kitchin
Subject: Re: [O] [PATCH] Make lexical eval default for elisp src blocks
Date: Mon, 18 Apr 2016 11:44:05 -0400
User-agent: mu4e 0.9.16; emacs

I don't think so. I haven't seen this be the case. A simple example like
this works as expected I think.

#+BEGIN_SRC emacs-lisp
(setq x 4)

: 4

#+BEGIN_SRC emacs-lisp
(+ x 9)

: 13

So far, I have only seen where this makes some new things possible. e.g.

This will not work unless evaluated with lexical-binding
#+BEGIN_SRC emacs-lisp :results value :lexical yes
;; Graham's alambda
(defmacro alambda (parms &rest body)
  `(cl-labels ((self ,parms ,@body))

 (alambda (n)
          (if (> n 0)
               (self (- n 1))))))

(princ (funcall N 3))

| 3 | 2 | 1 |

This just provides a different approach to :var I think.

#+BEGIN_SRC emacs-lisp :lexical '((x . 23))
(print x)

: 23

I would be interested to see any counter examples though, where behavior
changes, or stops working.

Adam Porter writes:

> John Kitchin <address@hidden> writes:
> Forgive my ignorance--I haven't really dug into lexical scoping yet--but
> what is the basic effect will this change have on elisp code blocks?
> Say I'm doing some sort-of literate development and I have some code
> blocks that `setq' here and there, setting vars in the Emacs
> environment.  Will the scope of these vars now be limited to their code
> blocks?  Would I need to disable lexical scoping?  Thanks.

Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213

reply via email to

[Prev in Thread] Current Thread [Next in Thread]