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
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
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
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
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
Translating dependency into parametricity
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Mathematical Structures in Computer Science
Fast and loose reasoning is morally correct
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The Impact of seq on Free Theorems-Based Program Transformations
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Free Theorems and Runtime Type Representations
Electronic Notes in Theoretical Computer Science (ENTCS)
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
A shortcut fusion rule for circular program calculation
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Selective strictness and parametricity in structural operational semantics, inequationally
Theoretical Computer Science
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
Much ado about two (pearl): a pearl on parallel prefix computation
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Bidirectionalization for free! (Pearl)
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Shortcut fusion rules for the derivation of circular and higher-order monadic programs
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
A family of syntactic logical relations for the semantics of Haskell-like languages
Information and Computation
Parametricity for Haskell with Imprecise Error Semantics
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
Free theorems involving type constructor classes: functional pearl
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
From parametric polymorphism to models of polymorphic fpc
Mathematical Structures in Computer Science
Free theorems for functional logic programs
Proceedings of the 4th ACM SIGPLAN workshop on Programming languages meets program verification
Parametricity, type equality, and higher-order polymorphism
Journal of Functional Programming
Exploiting algebra/coalgebra duality for program fusion extensions
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
Minimally strict polymorphic functions
Proceedings of the 13th international ACM SIGPLAN symposium on Principles and practices of declarative programming
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
Automatically generating counterexamples to naive free theorems
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Testing polymorphic properties
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Shortcut fusion rules for the derivation of circular and higher-order programs
Higher-Order and Symbolic Computation
The Impact of seq on Free Theorems-Based Program Transformations
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
A shortcut fusion approach to accumulations
Science of Computer 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, the standard parametricity theorem fails for nonstrict languages supporting a polymorphic strict evaluation primitive like Haskell's seq. Contrary to the folklore surrounding seq and parametricity, we show that not even quantifying only over strict and bottom-reflecting relations in the $\forall$-clause of the underlying logical relation --- and thus restricting the choice of functions with which such relations are instantiated to obtain free theorems to strict and total ones --- is sufficient to recover from this failure. By addressing the subtle issues that arise when propagating up the type hierarchy restrictions imposed on a logical relation in order to accommodate the strictness primitive, we provide a parametricity theorem for the subset of Haskell corresponding to a Girard-Reynolds-style calculus with fixpoints, algebraic datatypes, and seq. A crucial ingredient of our approach is the use of an asymmetric logical relation, which leads to "inequational" versions of free theorems enriched by preconditions guaranteeing their validity in the described setting. Besides the potential to obtain corresponding preconditions for standard equational free theorems by combining some new inequational ones, the latter also have value in their own right, as is exemplified with a careful analysis of seq's impact on familiar program transformations.