Results 1 -
5 of
5
Understanding and Evolving the ML Module System
, 2005
"... 9706572, and the US Air Force under grant F19628-95-C-0050 and a generous fellowship. The views and conclusions contained in this document are those of the author and should not be interpreted as representing the official policies, either expressed or implied, of any sponsoring institution, the U.S. ..."
Abstract
-
Cited by 36 (10 self)
- Add to MetaCart
9706572, and the US Air Force under grant F19628-95-C-0050 and a generous fellowship. The views and conclusions contained in this document are those of the author and should not be interpreted as representing the official policies, either expressed or implied, of any sponsoring institution, the U.S. government or any other entity.
An open and shut typecase
, 2004
"... Two different ways of defining ad-hoc polymorphic operations commonly occur in programming languages. With the first form polymorphic operations are defined inductively on the structure of types while with the second form polymorphic operations are defined for specific sets of types. In intensional ..."
Abstract
-
Cited by 16 (9 self)
- Add to MetaCart
Two different ways of defining ad-hoc polymorphic operations commonly occur in programming languages. With the first form polymorphic operations are defined inductively on the structure of types while with the second form polymorphic operations are defined for specific sets of types. In intensional type analysis operations are defined by induction on the structure of types. Therefore no new cases are necessary for user-defined types, because these types are equivalent to their underlying structure. However, intensional type analysis is “closed ” to extension, as the behavior of the operations cannot be differentiated for the new types, thus destroying the distinctions that these types are designed to express. Haskell type classes on the other hand define polymorphic operations for sets of types. Operations defined by class instances are considered “open”—the programmer can add instances for new types without modifying existing code. However, the operations must be extended with specialized code for each new type, and it may be tedious or even impossible to add extensions that apply to a large universe of new types. Both approaches have their benefits, so it is important to let programmers decide which is most appropriate for their needs. In this paper, we define a language that supports both forms of ad-hoc polymorphism, using the same basic constructs.
Modal Types for Mobile Code
, 2008
"... In this dissertation I argue that modal type systems provide an elegant and practical means for controlling local resources in spatially distributed computer programs. A distributed program is one that executes in multiple physical or logical places. It usually does so because those places have loca ..."
Abstract
-
Cited by 13 (0 self)
- Add to MetaCart
In this dissertation I argue that modal type systems provide an elegant and practical means for controlling local resources in spatially distributed computer programs. A distributed program is one that executes in multiple physical or logical places. It usually does so because those places have local resources that can only be used in those locations. Such resources can include processing power, proximity to data, hardware, or the physical presence of a user. Programmers that write distributed applications therefore need to be able to reason about the places in which their programs will execute. This work provides an elegant and practical way to think about such programs in the form of a type system derived from modal logic. Modal logic allows for reasoning about truth from multiple simultaneous perspectives. These perspectives, called "worlds," are identified with the locations in the distributed program. This enables the programming language to be simultaneously aware of the various hosts involved in a program, their
Certifying Compilation for Standard ML in a Type Analysis Framework
, 2005
"... or implied, of any sponsoring institution, the U.S. government or any other entity. ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
or implied, of any sponsoring institution, the U.S. government or any other entity.
unknown title
"... My research interests are in programming languages and compilers, focusing on the use of type theory and logic as a foundation upon which to build practical and useful programming tools. • Programming languages provide the mediums in which the vast majority of the art and artifacts of the computer p ..."
Abstract
- Add to MetaCart
My research interests are in programming languages and compilers, focusing on the use of type theory and logic as a foundation upon which to build practical and useful programming tools. • Programming languages provide the mediums in which the vast majority of the art and artifacts of the computer profession are expressed. As such, I believe that this area of research is fundamental to the advancement of computer science. Without good programming languages in which to express our ideas, we are greatly limited in our ability to leverage automation to manage complexity. • A compiler serves as the interface between the abstractions of a programming language and the concrete details of a machine. Without good compilers, the utility of a programming language may be limited by performance costs. Good compilers are essential to making good programming languages practical. • A type system provides a means for programmers to write down facts and invariants about their programs within their programs, in such a way that these facts and invariants can be automatically checked. Types therefore provide a valuable tool for managing complexity by documenting and enforcing the key abstractions of a program. The ability to automatically check properties of programs is important for productivity and for security. A compiler can also take advantage of the invariants encoded in types to produce better code. In this way, types serve both as a tool to check facts about

