FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Proofs About Lists Using Ellipsis
LPAR '99 Proceedings of the 6th International Conference on Logic Programming and Automated Reasoning
Free theorems in the presence of seq
Proceedings of the 31st 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
Proving properties about lists using containers
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
A generic deriving mechanism for Haskell
Proceedings of the third ACM Haskell symposium on Haskell
Sloth - a tool for checking minimal-strictness
PADL'11 Proceedings of the 13th international conference on Practical aspects of declarative languages
Testing polymorphic properties
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Hi-index | 0.00 |
In this paper we show how to efficiently check whether a polymorphic function is minimally strict. A function is minimally strict if it is the minimal element of a specific less-strict ordering. We prove that we can check whether two polymorphic functions are related by the less-strict ordering by either checking it a) for an arbitrary monomorphic instance of the functions or b) for all shapes of the functions' argument type. A shape is a value of a monomorphic instance of a polymorphic data type where each polymorphic component is replaced by an element that identifies its position in the data structure. In contrast to recent publications that characterize polymorphic functions by monomorphic instances we consider non-termination and selective strictness, ie a language closer to Haskell.