Lightweight Abstraction for Mathematical Computation in Java. Pavel Bourdykine and Stephen M. Watt Department of Computer Science Western University London Ontario, Canada. CASC 2012 Maribor, Slovenia 3-6 September 2012. The Context.
PavelBourdykine and Stephen M. Watt
Department of Computer ScienceWestern University London Ontario, Canada
3-6 September 2012
Z/5Zis different from int
Z/5Z [x]is different from int[ ]
instead of abstract types.
static Integers representing different properties
ints representing different parameters
Would like to DISTINGUISH between layer and position!
legal, but does not necessarily make sense
same arguments, different meanings
Problem multiplies with vectors of these things.
But achieve this without losing performance and rewriting library functions!
method arguments no longer ambiguous
Result: Type-check the objects by name
Result: Implement using underlying type
Annotated opaque class
Converted opaque class
opaque annotated code
Regular class usage:
Opaque class usage:
Converted opaque class:
Performance – native levels achieved. Safety – maintained.