The categorical abstract machine
Science of Computer Programming
How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The definition of Standard ML
A simple semantics for ML polymorphism
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
An ad hoc approach to the implementation of polymorphism
ACM Transactions on Programming Languages and Systems (TOPLAS)
Unboxed values as first class citizens in a non-strict functional language
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Report on the programming language Haskell: a non-strict, purely functional language version 1.2
ACM SIGPLAN Notices - Haskell special issue
A compilation method for ML-style polymorphic record calculi
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Unboxed objects and polymorphic typing
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Using Hindley-Milner type inference to optimise list representation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
On the type structure of standard ML
ACM Transactions on Programming Languages and Systems (TOPLAS)
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Tag-free garbage collection using explicit type parameters
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Compiling polymorphism using intensional type analysis
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A polymorphic record calculus and its compilation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Unboxed values and polymorphic typing revisited
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Principal type-schemes for functional programs
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
STACS '87 Proceedings of the 4th Annual Symposium on Theoretical Aspects of Computer Science
Compiling with Non-Parametric Polymorphism (Preliminary Report)
Compiling with Non-Parametric Polymorphism (Preliminary Report)
On the runtime complexity of type-directed unboxing
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Type inference with rank 1 polymorphism for type-directed compilation of ML
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
We present an unboxed operational semantics foran ML-style polymorphic language. Different from the conventional formalisms, theproposed semantics accounts for actual representations of run-timeobjects of various types, and supports a refined notion ofpolymorphism that allows polymorphic functions to be applied directlyto values of various different representations. In particular,polymorphic functions can receive multi-word constants such asfloating-point numbers without requiring them to be“boxed” (i.e., heap allocated.) This semantics will serveas an alternative basis for implementing polymorphic languages. The development of thesemantics is based on the technique of the type-inference-basedcompilation for polymorphic record operations [20]. Wefirst develop a lower-level calculus, called a polymorphic unboxed calculus, that accounts for directmanipulation of unboxed values in a polymorphic language. This unboxed calculus supportsefficient value binding through integer representation ofvariables. Different from de Bruijn indexes, our integerrepresentation of a variable corresponds to the actual offset to thevalue in a run-time environment consisting of objects of varioussizes. Polymorphism is supported through an abstraction mechanismover argument sizes. We then develop an algorithm that translates MLinto the polymorphic unboxed calculus by using type informationobtained through type inference. At the time of polymorphic let binding, the necessary size abstractions are inserted so that apolymorphic function is translated into a function that ispolymorphic not only in the type of the argument but also in itssize. The ML type system is shown to be sound with respect to theoperational semantics realized by the translation.