Ada's derived types and units of measure
Software—Practice & Experience
A proposal for an extended form of type checking of expressions
The Computer Journal
Programming pascal with physical units
ACM SIGPLAN Notices
Implementation of physical units
ACM SIGPLAN Notices
An Ada package for dimensional analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Strongtalk: typechecking Smalltalk in a production environment
OOPSLA '93 Proceedings of the eighth annual conference on Object-oriented programming systems, languages, and applications
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Relational parametricity and units of measure
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Analysis patterns: reusable objects models
Analysis patterns: reusable objects models
Compatible genericity with run-time types for the Java programming language
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type inference with constrained types
Theory and Practice of Object Systems - Special issue on foundations of object-oriented languages
A Java extension with support for dimensions
Software—Practice & Experience
Incorporation of units into programming languages
Communications of the ACM
Strong typing and physical units
ACM SIGPLAN Notices
Smalltalk-80: The Language
ESOP '94 Proceedings of the 5th European Symposium on Programming: Programming Languages and Systems
Efficient Implementation of Run-time Generic Types for Java
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic Programming
A first-class approach to genericity
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
Programming ad-hoc networks of mobile and resource-constrained devices
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Arithmetic with measurements on dynamically-typed object-oriented languages
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Osprey: a practical type system for validating dimensional unit correctness of C programs
Proceedings of the 28th international conference on Software engineering
Dynamic inference of abstract types
Proceedings of the 2006 international symposium on Software testing and analysis
Adding Dimension Analysis to Java as a Composable Language Extension
Generative and Transformational Techniques in Software Engineering II
Automatic dimension inference and checking for object-oriented programs
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
A point based model of the Gregorian Calendar
Computer Languages, Systems and Structures
Expressing measurement units in interfaces for scientific component software
Proceedings of the 2009 Workshop on Component-Based High Performance Computing
“little language” project modules
Journal of Functional Programming
Empirical Software Engineering and Verification
A Rewriting Logic Approach to Static Checking of Units of Measurement in C
Electronic Notes in Theoretical Computer Science (ENTCS)
Hi-index | 0.00 |
Programs that manipulate physical quantities typically represent these quantities as raw numbers corresponding to the quantities' measurements in particular units (e.g., a length represented as a number of meters). This approach eliminates the possibility of catching errors resulting from adding or comparing quantities expressed in different units (as in the Mars Climate Orbiter error [11]), and does not support the safe comparison and addition of quantities of the same dimension. We show how to formulate dimensions and units as classes in a nominally typed object-oriented language through the use of statically typed metaclasses. Our formulation allows both parametric and inheritance poly-morphism with respect to both dimension and unit types. It also allows for integration of encapsulated measurement systems, dynamic conversion factors, declarations of scales (including nonlinear scales) with defined zeros, and nonconstant exponents on dimension types. We also show how to encapsulate most of the "magic machinery" that handles the algebraic nature of dimensions and units in a single meta-class that allows us to treat select static types as generators of a free abelian group.