[Larceny-users] recursive lists and C-c problems

William D Clinger will at ccs.neu.edu
Mon Dec 8 10:53:13 EST 2008


Marco Maggi wrote:
>   I am new to Larceny (10 minutes) taking a look at
> larceny-0.963-bin-native-ia32-linux86)

v0.97b1	is newer and should have fewer bugs.

> and I see
> that this script goes into an endless loop:
>
> (import (rnrs)
>   (rnrs mutable-pairs (6)))
>
> (write (let ((v '(1 #f)))
>          (set-car! (cdr v) v)
>          v))
> (newline)
>
> when run with "scheme-script". Ikarus and the last
> Ypsilon do not, so I wonder why Larceny chooses to
> fill my terminal with "(1" until I hit Control-c. :)

The R6RS does not specify any finite notation for
circular pseudo-lists, and the R6RS also forbids
extensions to its syntax that could express circular
pseudo-lists.

Attempts to print circular pseudo-lists in R6RS-conforming
systems should result in infinite output.  Ikarus and
Ypsilon, like Larceny, may default to a non-conforming
mode in which they have extended the R6RS notations,
contrary to the R6RS's explicit language concerning
extensions; if so, then Ikarus and Ypsilon should
provide some kind of switch that will force them into
a conforming mode, at least with regard to lexical
and datum syntax.  In Larceny, the #!r6rs flag serves
that purpose; you might try that in Ikarus and Ypsilon.

> After hitting C-c, I see that the debugger is here
> and I can exit it with "q". And I am left with a prompt?

Yes.  It isn't a very useful prompt, since nothing is
in scope, but it's a prompt.

> Does it mean that I am forbidden to create a set[ug]id
> script with Larceny?

I think that's up to your operating system.  Larceny
is normally executed via a shell script, and the OS
(for security) may ignore the set[ug]id attribute of
shell scripts.

Control-C is not the only security problem that should
concern you.  Although Larceny checks for accidental
problems with the R6RS top-level program and libraries
being executed, it does not even try to guard against
malicious manipulation of the program and libraries.

Will



More information about the Larceny-users mailing list