The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The type and effect discipline
Information and Computation
Type extension through polymorphism
ACM Transactions on Programming Languages and Systems (TOPLAS)
An annotation language for optimizing software libraries
Proceedings of the 2nd conference on Domain-specific languages
A cost-effective estimation of uncaught exceptions in standard ML programs
Theoretical Computer Science
The Definition of Standard ML
TCS '02 Proceedings of the IFIP 17th World Computer Congress - TC1 Stream / 2nd IFIP International Conference on Theoretical Computer Science: Foundations of Information Technology in the Era of Networking and Mobile Computing
A sequence of structured subsets of PL/I
SIGCSE '74 Proceedings of the fourth SIGCSE technical symposium on Computer science education
An extensible dynamically-typed hierarchy of exceptions
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Exception Handlers as Extensible Cases
APLAS '08 Proceedings of the 6th Asian Symposium on Programming Languages and Systems
Multi-stage programming with functors and monads: eliminating abstraction overhead from generic code
GPCE'05 Proceedings of the 4th international conference on Generative Programming and Component Engineering
Hi-index | 0.00 |
This is the year 2008 and ML-style exceptions are everywhere. Most modern languages, whether academic or industrial, feature some variant of this mechanism. Languages such as Java even feature static coverage-checking for such exceptions, something not available for ML languages, at least not without resorting to external tools. In this document, we demonstrate a design principle and a tiny library for managing errors in a functional manner, with static coveragechecking, automatically-inferred, structurally typed and hierarchical exceptional cases, with a reasonable run-time penalty. Our work is based on OCaml and features monads, polymorphic variants, compile-time code rewriting and trace elements of black magic.