Denotational semantics: a methodology for language development
Denotational semantics: a methodology for language development
How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Strictness analysis: a new perspective based on type inference
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
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
Strictness analysis using abstract reduction
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
Typer inference builds a short cut to deforestation
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Generative programming: methods, tools, and applications
Generative programming: methods, tools, and applications
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
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
⊤⊤-closed relations and admissibility
Mathematical Structures in Computer Science
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
Selective strictness and parametricity in structural operational semantics, inequationally
Theoretical Computer Science
Relational parametricity for references and recursive types
Proceedings of the 4th international workshop on Types in language design and implementation
A family of syntactic logical relations for the semantics of Haskell-like languages
Information and Computation
Making "stricterness" more relevant
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Semantics and pragmatics of new shortcut fusion rules
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
The impact of higher-order state and control effects on local relational reasoning
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Parametricity and dependent types
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Making "stricterness" more relevant
Higher-Order and Symbolic Computation
Automatically generating counterexamples to naive free theorems
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Hi-index | 0.00 |
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. Unfortunately, standard parametricity results - including so-called free theorems - fail for nonstrict languages supporting a polymorphic strict evaluation primitive such as Haskell's seq. A folk theorem maintains that such results hold for a subset of Haskell corresponding to a Girard-Reynolds calculus with fixpoints and algebraic datatypes even when seq is present provided the relations which appear in their derivations are required to be bottom-reflecting and admissible. In this paper we show that this folklore is incorrect, but that parametricity results can be recovered in the presence of seq by restricting attention to left-closed, total, and admissible relations instead. The key novelty of our approach is the asymmetry introduced by left-closedness, which leads to "inequational" versions of standard parametricity results together with preconditions guaranteeing their validity even when seq is present. We use these results to derive criteria ensuring that both equational and inequational versions of short cut fusion and related program transformations based on free theorems hold in the presence of seq