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 ⊥
_________________________
 Racket Developers list:
 http://lists.racket-lang.org/dev

Reply via email to