Functional programming using standard ML
Functional programming using standard ML
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Soft typing: an approach to type checking for dynamically typed languages
Soft typing: an approach to type checking for dynamically typed languages
The Undecidability of the Existence of Zeros of Real Elementary Functions
Journal of the ACM (JACM)
How to Combine the Benefits of Strict and Soft Typing
SFP '99 Selected papers from the 1st Scottish Functional Programming Workshop (SFP99)
Intersection types and bounded polymorphism
Mathematical Structures in Computer Science
Hi-index | 0.01 |
We study type checking that is complete in the sense that it accepts every program whose subexpressions can all be executed without raising a type error at runtime. In a complete type checker for every function call (f a) of a function f with an argument expression a of type ta it is checked whether f is applicable to one of the possible values of a, i.e. whether {[ta]} ∩dom(f) ≠ 0 holds where {[t]} denotes the semantics of a type t. When approximating dom(f) by a type tin it turns out that the usual function type constructor is not appropriate for complete type checking: for a function type tf = tin → tout of f the input type tin is usually not guaranteed to contain all values of dom(f) and the test for common elements can erroneously fail. We therefore introduce an alternative notion of function types, called I/O-representation, where the input types cover a superset of the domain of the denoted functions. We show that this notion of function types fits into the framework of complete type checking much better than the usual function type constructor. Moreover, we argue that complete type checking overcomes the disadvantages of soft-typing approaches by enabling the rejection of programs instead of just raising a warning.