On 06/09/2014 01:19 AM, Eric Dobson wrote:

Does this seem like a reasonable thing to support/do people see issues with it?

I can only speak on reasonableness, and my answer is emphatically YES.

Typed Racket is a great language in which to define and use data structures: access is very fast, and many properties are checked statically. But accessor performance suffers badly when the data types are used in untyped Racket. If access uses higher-order functions (e.g. math/array), wrapping the functions slows access by a very high constant factor. If the data structures are first-order, every O(1) access becomes O(n).

I recently had to work around this in Plot when I needed an untyped module to be able to operate on typed BSP trees. I ended up making a typed weak hash map from "BSP tree handles" (gensyms) to BSP trees, and writing a new untyped API for operating on trees using handles. It was ugly. If the untyped and typed modules had been too tightly coupled, it would have been impossible.

IIUC, your proposal would make untyped use of typed data structures actually feasible for real-world use. So again, YES.

Neil ⊥

_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to