Boxed numbers are a performance disaster, both for operations and, more important, for storage/access. Clojure has support for primitives in local contexts, but with some semantic inconsistencies with boxed arithmetic, and no support for primitives across function call boundaries.
- Normalize semantics between operations involving primitives and boxed numbers
- Support collections of primitives
- Support arguments and return types of primitives
- longs/doubles only
- Support higher-order ops involving primitives
- Involves some breaking changes
- How to integrate with important abstractions?