Type Classes with Functional Dependencies
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Understanding functional dependencies via constraint handling rules
Journal of Functional Programming
Type checking with open type functions
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Monadic constraint programming
Journal of Functional Programming
Finally tagless, partially evaluated: tagless staged interpreters for simpler typed languages
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Experience report: using hackage to inform language design
Proceedings of the third ACM Haskell symposium on Haskell
Type classes as objects and implicits
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Generic programming with c++ concepts and haskell type classes: A comparison
Journal of Functional Programming
On the bright side of type classes: instance arguments in Agda
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
The popular Glasgow Haskell Compiler extends the Haskell 98 type system with several powerful features, leading to an expressive language of type terms. In contrast, constraints over types have received much less attention, creating an imbalance in the expressivity of the type system. In this paper, we rectify the imbalance, transferring familiar type-level constructs, synonyms and families, to the language of constraints, providing a symmetrical set of features at the type-level and constraint-level. We introduce constraint synonyms and constraint families, and illustrate their increased expressivity for improving the utility of polymorphic EDSLs in Haskell, amongst other examples. We provide a discussion of the semantics of the new features relative to existing type system features and similar proposals, including details of termination.