How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Dynamic typing in a statically typed language
ACM Transactions on Programming Languages and Systems (TOPLAS)
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Polymorphic type inference and abstract data types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Putting type annotations to work
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A lightweight implementation of generics and dynamics
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Parametric Overloading in Polymorphic Programming Languages
ESOP '88 Proceedings of the 2nd European Symposium on Programming
IFL '96 Selected Papers from the 8th International Workshop on Implementation of Functional Languages
Dynamic Types and Type Dependent Functions
IFL '98 Selected Papers from the 10th International Workshop on 10th International Workshop
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
Simple unification-based type inference for GADTs
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Practical type inference for arbitrary-rank types
Journal of Functional Programming
Understanding functional dependencies via constraint handling rules
Journal of Functional Programming
ML Modules and Haskell Type Classes: A Constructive Comparison
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Exchanging sources between clean and Haskell: a double-edged front end for the clean compiler
Proceedings of the third ACM Haskell symposium on Haskell
Dynamic construction of generic functions
IFL'04 Proceedings of the 16th international conference on Implementation and Application of Functional Languages
A functional shell that operates on typed and compiled applications
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
iTasks for a change: type-safe run-time change in dynamically evolving workflows
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Proceedings of the 4th ACM symposium on Haskell
Embedding polymorphic dynamic typing
Proceedings of the seventh ACM SIGPLAN workshop on Generic programming
Hi-index | 0.00 |
Static typing in functional programming languages such as Clean, Haskell, and ML is highly beneficial: it prevents erroneous behaviour at run time and provides opportunities for optimisations. However, dynamic typing is just as important as sometimes types are not known until run time. Examples are exchanging values between applications by deserialisation from disk, input provided by a user, or obtaining values via a network connection. Ideally, a static typing system works in close harmony with an orthogonal dynamic typing system; not discriminating between statically and dynamically typed values. In contrast to Haskell's minimal support for dynamic typing, Clean has an extensive dynamic typing; it adopted ML's support for monomorphism and parametric polymorphism and added the notion of type dependencies. Unfortunately, ad-hoc polymorphism has been left out of the equation over the years. While both ad-hoc polymorphism and dynamic typing have been studied in-depth earlier, their interaction in a statically typed functional language has not been studied before. In this paper we explore the design space of their interactions.