PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Type inclusion constraints and type inference
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Soft typing with conditional types
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
A practical soft type system for scheme
ACM Transactions on Programming Languages and Systems (TOPLAS)
A practical subtyping system for Erlang
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Analysis and Visualization Tools for Constraint Programming, Constrain Debugging (DiSCiPl project)
Analysis and Visualization Tools for Constraint Programming, Constrain Debugging (DiSCiPl project)
A soft-typing system for Erlang
Proceedings of the 2003 ACM SIGPLAN workshop on Erlang
DrScheme: a programming environment for Scheme
Journal of Functional Programming
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
A language for specifying type contracts in erlang and its interaction with success typings
ERLANG '07 Proceedings of the 2007 SIGPLAN workshop on ERLANG Workshop
Gradual typing of erlang programs: a wrangler experience
Proceedings of the 7th ACM SIGPLAN workshop on ERLANG
Automated module interface upgrade
Proceedings of the 8th ACM SIGPLAN workshop on ERLANG
Automatic assessment of failure recovery in Erlang applications
Proceedings of the 8th ACM SIGPLAN workshop on ERLANG
SAS '09 Proceedings of the 16th International Symposium on Static Analysis
Combining static and dynamic reasoning for bug detection
TAP'07 Proceedings of the 1st international conference on Tests and proofs
Extending Dylan's type system for better type inference and error detection
Proceedings of the 2010 international conference on Lisp
Detection of asynchronous message passing errors using static analysis
PADL'11 Proceedings of the 13th international conference on Practical aspects of declarative languages
Session typing for a featherweight Erlang
COORDINATION'11 Proceedings of the 13th international conference on Coordination models and languages
Typed callbacks for more robust behaviours
Proceedings of the 10th ACM SIGPLAN workshop on Erlang
A PropEr integration of types and function specifications with property-based testing
Proceedings of the 10th ACM SIGPLAN workshop on Erlang
Static detection of race conditions in erlang
PADL'10 Proceedings of the 12th international conference on Practical Aspects of Declarative Languages
Using static analysis to detect type errors and concurrency defects in erlang programs
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
System dependence graphs in sequential erlang
FASE'12 Proceedings of the 15th international conference on Fundamental Approaches to Software Engineering
Soter: an automatic safety verifier for erlang
Proceedings of the 2nd edition on Programming systems, languages and applications based on actors, agents, and decentralized control abstractions
Precise explanation of success typing errors
PEPM '13 Proceedings of the ACM SIGPLAN 2013 workshop on Partial evaluation and program manipulation
Multicore profiling for Erlang programs using percept2
Proceedings of the twelfth ACM SIGPLAN workshop on Erlang
Hi-index | 0.00 |
In languages where the compiler performs no static type checks, many programs never go wrong, but the intended use of functions and component interfaces is often undocumented or appears only in the form of comments which cannot always be trusted. This often makes program maintenance problematic. We show that it is possible to reconstruct a significant portion of the type information which is implicit in a program, automatically annotate function interfaces, and detect definite type clashes without fundamental changes to the philosophy of the language or imposing a type system which unnecessarily rejects perfectly reasonable programs. To do so, we introduce the notion of success typings of functions. Unlike most static type systems, success typings incorporate subtyping and never disallow a use of a function that will not result in a type clash during runtime. Unlike most soft typing systems that have previously been proposed, success typings allow for compositional, bottom-up type inference which appears to scale well in practice. Moreover, by taking control-flow into account and exploiting properties of the language such as its module system, success typings can be refined and become accurate and precise We demonstrate the power and practicality of the approach by applying it to Erlang. We report on our experiences from employing the type inference algorithm, without any guidance, on programs of significant size