[racket] A safe version of unsafe-struct-ref [for Whalesong]

From: Sam Tobin-Hochstadt (samth at cs.indiana.edu)
Date: Thu Jul 3 09:12:00 EDT 2014

The output of `match` when it uses `unsafe-struct-ref` can't be
faithfully implemented safely. In particular, `match` has access to
the accessor function, which may give you results that you can't get
from safe reflection such as `struct->vector`.

Instead, I think you should just implement `unsafe-struct-ref` to look
inside the abstraction of structs, so that it violates the abstraction
in the same way that it does in Racket. While this won't potentially
crash in JavaScript, it will be unsafe relative to the abstractions of
Racket, and thus deserves the name unsafe.

Sam

On Wed, Jul 2, 2014 at 9:06 PM, Jens Axel Søgaard <jensaxel at soegaard.net> wrote:
> Is it possible to implement unsafe-struct-ref using safe constructs only?
>
> The reason behind this peculiar question, is that I am porting racket/match
> to Whalesong. The match compiler uses various unsafe constructs that Whalesong
> doesn't implement. It is straightforward to replace, say,
> unsafe-vector-ref with vector-ref.
>
> But unsafe-struct-ref ?
>
> It is okay to use all tricks in the book in phase 1 (Whalesong has
> restrictions in phase 0 only).
>
> /Jens Axel
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users


Posted on the users mailing list.