[racket-dev] TR's optimizer eventually going to unbox structs?
Is TR's optimizer eventually going to unbox structs in the same way it
unboxes rectangular flonums?
I have a design choice right now: how to represent probabilities. Floats
are good because of their speed, but because of floating-point
limitations, *four different representations* are typically used. (For
the curious: p, 1-p, log(p), and log(1-p).) I'd like to make functions
that accept any one of these representations, denoted by this type:
(define-type Probability
(U probability 1-probability log-probability log-1-probability))
The types are simply struct types that tag Float.
Of course, manually boxing flonums ruins any chance of the compiler
emitting code that keeps the flonums unboxed. If TR's optimizer unboxed
structs, though, everything could be speedy.
FWIW, by "eventually," I mean "within the next n years", where "n" is a
smallish number.
Neil ⊥