ORBIT: an optimizing compiler for scheme
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Basic polymorphic typechecking
Science of Computer Programming
Garbage collection in an uncooperative environment
Software—Practice & Experience
The templates approach to software reuse
Software reusability: vol. 1, concepts and models
Continuation-passing, closure-passing style
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Elements of functional programming
Elements of functional programming
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Compiling with continuations
Automatic autoprojection of higher order recursive equations
ESOP '90 Selected papers from the symposium on 3rd European symposium on programming
Unboxed objects and polymorphic typing
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
No assembly required: compiling standard ML to C
ACM Letters on Programming Languages and Systems (LOPLAS)
The essence of compiling with continuations
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Separating stages in the continuation-passing style transformation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Closure analysis in constraint form
ACM Transactions on Programming Languages and Systems (TOPLAS)
A correspondence between continuation passing style and static single assignment form
IR '95 Papers from the 1995 ACM SIGPLAN workshop on Intermediate representations
Substitution: a formal methods case study using monads and transformations
TAPSOFT '93 Selected papers of the colloquium on Formal approaches of software engineering
Simple imperative polymorphism
Lisp and Symbolic Computation - Special issue on state in programming languages (part I)
Abstract models of memory management
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Lisp and Symbolic Computation
Region-based memory management
Information and Computation
Type-driven defunctionalization
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
ICSE '85 Proceedings of the 8th international conference on Software engineering
The Definition of Standard ML
Calculating Software Generators from Solution Specifications
TAPSOFT '95 Proceedings of the 6th International Joint Conference CAAP/FASE on Theory and Practice of Software Development
Compiling a functional language
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
Rabbit: A Compiler for Scheme
Shrinking lambda expressions in linear time
Journal of Functional Programming
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Type-preserving garbage collectors
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Contification using dominators
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Functioning without closure: type-safe customized function representations for standard ML
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
A dependently typed assembly language
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Warm fusion in Stratego: A case study in generation of program transformation systems
Annals of Mathematics and Artificial Intelligence
Toward a foundational typed assembly language
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Inferring annotated types for inter-procedural register allocation with constructor flattening
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Optimizing Nested Loops Using Local CPS Conversion
Higher-Order and Symbolic Computation
Flow-Directed Closure Conversion for Typed Languages
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
A Calculus for Compiling and Linking Classes
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Design and Correctness of Program Transformations Based on Control-Flow Analysis
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
Euro-Par '99 Proceedings of the 5th International Euro-Par Conference on Parallel Processing
Program Representation Size in an Intermediate Language with Intersection and Union Types
TIC '00 Selected papers from the Third International Workshop on Types in Compilation
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Automatic code generation for a convection scheme
Proceedings of the 2003 ACM symposium on Applied computing
Polymorphic typed defunctionalization
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Modular control-flow analysis with rank 2 intersection types
Mathematical Structures in Computer Science
Using semi-lagrangian formulations with automatic code generation for environmental modeling
Proceedings of the 2004 ACM symposium on Applied computing
A calculus with polymorphic and polyvariant flow types
Journal of Functional Programming
Polymorphic typed defunctionalization and concretization
Higher-Order and Symbolic Computation
Strongly typed memory areas programming systems-level data structures in a functional language
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Compiling with continuations, continued
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Refined typechecking with Stardust
PLPV '07 Proceedings of the 2007 workshop on Programming languages meets program verification
Flattening tuples in an SSA intermediate representation
Higher-Order and Symbolic Computation
Science of Computer Programming
CEAL: a C-based language for self-adjusting computation
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Greedy bidirectional polymorphism
Proceedings of the 2009 ACM SIGPLAN workshop on ML
A new one-pass transformation into monadic normal form
CC'03 Proceedings of the 12th international conference on Compiler construction
Trusted source translation of a total function language
TACAS'08/ETAPS'08 Proceedings of the Theory and practice of software, 14th international conference on Tools and algorithms for the construction and analysis of systems
Code generation for semi-lagrangian formulations
ISPDC'03 Proceedings of the Second international conference on Parallel and distributed computing
Validated compilation through logic
FM'11 Proceedings of the 17th international conference on Formal methods
Control-flow analysis of functional programs
ACM Computing Surveys (CSUR)
Generating verifiable java code from verified PVS specifications
NFM'12 Proceedings of the 4th international conference on NASA Formal Methods
Functions are data too: defunctionalization for PL/SQL
Proceedings of the VLDB Endowment
Hi-index | 0.00 |
We describe a system that supports source-level integration of ML-like functional language code with ANSI C or Ada83 code. The system works by translating the functional code into type-correct, ‘vanilla’ C or Ada; it offers simple, efficient, type-safe inter-operation between new functional code components and ‘legacy’ third-generation-language components. Our translator represents a novel synthesis of techniques including user-parameterized specification of primitive types and operators; removal of polymorphism by code specialization; removal of higher-order functions using closure datatypes and interpretation; and aggressive optimization of the resulting first-order code, which can be viewed as encoding the result of a closure analysis. Programs remain fully typed at every stage of the translation process, using only simple, standard type systems. Target code runs at speeds comparable to the output of current optimizing ML compilers, even though handicapped by a conservative garbage collector.