GNU bug report logs - #22961
The read function does not support a lambda argument

Previous Next

Package: emacs;

Reported by: Mihai Călin Bazon <mihai.bazon <at> gmail.com>

Date: Wed, 9 Mar 2016 16:28:01 UTC

Severity: normal

Done: Andreas Schwab <schwab <at> linux-m68k.org>

Bug is archived. No further changes may be made.

Full log


Message #19 received at 22961 <at> debbugs.gnu.org (full text, mbox):

From: Mihai Călin Bazon <mihai.bazon <at> gmail.com>
To: Kaushal Modi <kaushal.modi <at> gmail.com>
Cc: John Mastro <john.b.mastro <at> gmail.com>,
 Andreas Schwab <schwab <at> linux-m68k.org>, 22961 <at> debbugs.gnu.org
Subject: Re: The read function does not support a lambda argument
Date: Wed, 9 Mar 2016 23:10:39 +0200
[Message part 1 (text/plain, inline)]
You should (setq lexical-binding t) before running it (and note that's
buffer-local, I've been bitten by that several times).  With lexical
binding my original example should work (with the fix, as John pointed out,
that the argument should be &optional).

Thanks Andreas for the quick fix! :-)

On Wed, Mar 9, 2016 at 10:31 PM, Kaushal Modi <kaushal.modi <at> gmail.com>
wrote:

> I just re-built using this commit (
> http://git.savannah.gnu.org/cgit/emacs.git/commit/?h=emacs-25&id=711ca362e7f8ca7c4f664dc2fe60bc5fa4e4f4fe
> ).
>
> Now the earlier error went away, but I get
>
>   Symbol’s value as variable is void: prev
>
> I guess the read call should be inside the let:
>
> (let ((str "TEST")
>       (pos 0)
>       (prev nil))
>   (read (lambda (&optional ch)
>           (cond
>            (ch (push ch prev))
>            (prev (pop prev))
>            ((< pos (length str))
>             (prog1 (aref str pos)
>               (setq pos (1+ pos))))))))
>
> Above returns "TEST".
>



-- 
Mihai Bazon,
http://lisperator.net/
[Message part 2 (text/html, inline)]

This bug report was last modified 9 years and 78 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.