[racket-dev] shared no longer works on cons?!?

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Thu Oct 20 23:24:31 EDT 2011

On Thu, Oct 20, 2011 at 10:11 PM, Ryan Culpepper <ryan at cs.utah.edu> wrote:
> Looks like it works in 5.0.2 (November 2010) but fails in 5.1 (February
> 2011).

You're talking about in the teaching languages, right? In #lang
racket, I see the first-produces-error behavior back to 5.0:

[robby at penghu] /Applications/Racket v5.0.2/bin$ ./racket
Welcome to Racket v5.0.2.
>  (first (shared ((x (cons 1 x))) x))
first: expected argument of type <non-empty list>; given #0='(1 . #0#)

At least for the racket language, this seems to go back at least as far as 5.0:

[robby at penghu] /Applications$ ./Racket\ v5.0/bin/racket
Welcome to Racket v5.0.
> (first (shared ((x (cons 1 x))) x))
first: expected argument of type <non-empty list>; given #0='(1 . #0#)

> The ultimate problem seems to be that deinprogramm/signature/signature-unit
> uses first from racket/list (checks list?, ie non-cyclic) rather than
> mzlib/list (only checks pair?).

This looks like it was the commit that changed the behavior for the
teaching languages:

  http://git.racket-lang.org/plt/commitdiff/c7d67f9babc2496aaf295a08264b79750785314b

and judging from the commit message, the change in behavior was not intentional.

Robby


Posted on the dev mailing list.