[CM] funny scheme code

Kjetil S. Matheussen k.s.matheussen at notam02.no
Mon Jul 20 12:02:38 PDT 2009



On Mon, 20 Jul 2009, Bill Schottstaedt wrote:

> For some reason, this code strikes me as funny:
>
> (let ((j (lambda () 0))
> 	(k 0))
>  (do ((i (j) (j))
> 	  (j (lambda () 1) (lambda () (+ i 1))))
>          ((= i 3) k)
>     (set! k (+ k i))))
>
> would you believe 6?  Maybe I need a vacation.
>

A slight modifications makes Guile (the one included
with fedora 11) crash:


[kjetil at ttleon bin]$ guile
guile> (let ((j (lambda () 0))
...       (k 0))
...   (do ((i (j)
...           (j))
...        (l (lambda ()
...             1)
...           (lambda ()
...             (+ i 1))))
...       ((= i 3) k)
...     (set! k (+ k i))))
Segmentation fault
[kjetil at ttleon bin]$
[kjetil at ttleon bin]$
[kjetil at ttleon bin]$ guile --version
Guile 1.8.6
Copyright (c) 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 
2007, 2008 Free Software Foundation
Guile may be distributed under the terms of the GNU General Public 
Licence;
certain other uses are permitted as well.  For details, see the file
`COPYING', which is included in the Guile distribution.
There is no warranty, to the extent permitted by law.
[kjetil at ttleon bin]$




More information about the Cmdist mailing list