GNU bug report logs -
#748
Elisp: lexical-let and cyclic structures
Previous Next
Reported by: michael_heerdegen <at> web.de
Date: Wed, 20 Aug 2008 14:05:05 UTC
Severity: normal
Tags: wontfix
Done: Glenn Morris <rgm <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
tag +748 wontfix
thanks
> When using the reader constructs `#N=' and `#N#' for cyclic
> structures, lexical-let sometimes produces errors which don't occur
> with let.
Most programming languages do not accept infinite programs. Elisp is
no exception. The fact that you can build cyclic abstract syntax trees
and that they sometimes get evaluated correctly is just an accident.
I.e. if it hurts, don't do it.
> (defun f (start)
> (lexical-let (start start) ;; return a closure
> #1=(lambda (x) (if (= x start) x
> (+ x (#1# (1- x)))))))
For this case, I'd recommend to make the recursion explicit, e.g.:
(defun f (start)
(lexical-let ((start start)) ;; return a closure
(labels ((loop (x) (if (= x start) x
(+ x (loop (1- x))))))
loop)))
-- Stefan
This bug report was last modified 13 years and 317 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.