A syntactic theory of sequential control
Theoretical Computer Science
Abstract types have existential type
ACM Transactions on Programming Languages and Systems (TOPLAS)
How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical Computer Science - Special issue: Fourth workshop on mathematical foundations of programming semantics, Boulder, CO, May 1988
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Shortcut deforestation in calculational form
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Bridging the gulf: a common intermediate language for ML and Haskell
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Concatenate, reverse and map vanish for free
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Shortcut fusion for accumulating parameters & zip-like functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A Generalization of Short-Cut Fusion and its Correctness Proof
Higher-Order and Symbolic Computation
Parametricity and Unboxing with Unpointed Types
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
TACS '91 Proceedings of the International Conference on Theoretical Aspects of Computer Software
Towards a theory of type structure
Programming Symposium, Proceedings Colloque sur la Programmation
Free theorems in the presence of seq
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Parametric polymorphism and operational equivalence
Mathematical Structures in Computer Science
Journal of Functional Programming
Algorithm + strategy = parallelism
Journal of Functional Programming
Mathematical Structures in Computer Science
Monadic augment and generalised short cut fusion
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Verifying haskell programs using constructive type theory
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
The logic of demand in Haskell
Journal of Functional Programming
Fast and loose reasoning is morally correct
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Boxy types: inference for higher-rank types and impredicativity
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
The Impact of seq on Free Theorems-Based Program Transformations
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Interpreting polymorphic FPC into domain theoretic models of parametric polymorphism
ICALP'06 Proceedings of the 33rd international conference on Automata, Languages and Programming - Volume Part II
Proof tool support for explicit strictness
IFL'05 Proceedings of the 17th international conference on Implementation and Application of Functional Languages
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Step-Indexed syntactic logical relations for recursive and quantified types
ESOP'06 Proceedings of the 15th European conference on Programming Languages and Systems
Proving correctness via free theorems: the case of the destroy/build-rule
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
State-dependent representation independence
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A family of syntactic logical relations for the semantics of Haskell-like languages
Information and Computation
Free theorems for functional logic programs
Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification
A trajectory-based strict semantics for program slicing
Theoretical Computer Science
Hi-index | 5.23 |
Parametric polymorphism constrains the behavior of pure functional programs in a way that allows the derivation of interesting theorems about them solely from their types, i.e., virtually for free. The formal background of such 'free theorems' is well developed for extensions of the Girard-Reynolds polymorphic lambda calculus by algebraic datatypes and general recursion, provided the resulting calculus is endowed with either a purely strict or a purely nonstrict semantics. But modern functional languages like Clean and Haskell, while using nonstrict evaluation by default, also provide means to enforce strict evaluation of subcomputations at will. The resulting selective strictness gives the advanced programmer explicit control over evaluation order, but is not without semantic consequences: it breaks standard parametricity results. This paper develops an operational semantics for a core calculus supporting all the language features emphasized above. Its main achievement is the characterization of observational approximation with respect to this operational semantics via a carefully constructed logical relation. This establishes the formal basis for new parametricity results, as illustrated by several example applications, including the first complete correctness proof for short cut fusion in the presence of selective strictness. The focus on observational approximation, rather than equivalence, allows a finer-grained analysis of computational behavior in the presence of selective strictness than would be possible with observational equivalence alone.