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 <jensa...@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 ____________________ Racket Users list: http://lists.racket-lang.org/users