Results 1 -
3 of
3
Contextual Polymorphism
, 1994
"... Programming languages often provide for various sorts of static type checking as a way of detecting invalid programs. However, statically checked type systems often require unnecessarily specific type information, which leads to frustratingly inflexible languages. Polymorphic type systems restore fl ..."
Abstract
-
Cited by 6 (0 self)
- Add to MetaCart
Programming languages often provide for various sorts of static type checking as a way of detecting invalid programs. However, statically checked type systems often require unnecessarily specific type information, which leads to frustratingly inflexible languages. Polymorphic type systems restore flexibility by allowing entities to take on more than one type. This thesis discusses polymorphism in statically typed programming languages. It provides precise definitions of the term "polymorphism" and for its varieties, "ad-hoc polymorphism", "universal polymorphism", "inclusion polymorphism", and "parametric polymorphism", and surveys and compares many existing mechanisms for providing polymorphism in programming languages. Finally, it introduces a new polymorphism mechanism, contextual polymorphism. Contextual polymorphism is a variant of parametric polymorphism that is based on contexts, which are abstractions of collections of declarations, and assertions, which link polymorphic routin...
Control Abstraction in Parallel Programming Languages
- In Proc. 4th International Conference on Computer Languages
, 1992
"... ion in Parallel Programming Languages Lawrence A. Crowl Department of Computer Science Oregon State University Corvallis, Oregon 97331-3202 Thomas J. LeBlanc Department of Computer Science University of Rochester Rochester, New York 14627-0226 Abstract Control abstraction is the process by ..."
Abstract
-
Cited by 4 (3 self)
- Add to MetaCart
ion in Parallel Programming Languages Lawrence A. Crowl Department of Computer Science Oregon State University Corvallis, Oregon 97331-3202 Thomas J. LeBlanc Department of Computer Science University of Rochester Rochester, New York 14627-0226 Abstract Control abstraction is the process by which programmers define new control constructs, specifying a statement ordering separately from an implementation of that ordering. We argue that control abstraction can and should play a central role in parallel programming. Control abstraction can be used to build new control constructs for the expression of parallelism. A control construct can have several implementations, representing the varying degrees of parallelism to be exploited on different architectures. Control abstraction also reduces the need for explicit synchronization, since it admits a precise specification of control flow. Using several examples, we illustrate these benefits of control abstraction. We also show that we ...
Parallel Programming with Control Abstraction
- ACM TOPLAS
, 1994
"... ion Lawrence A. Crowl Oregon State University and Thomas J. LeBlanc University of Rochester Parallel programming involves finding the potential parallelism in an application and mapping it to the architecture at hand. Since a typical application has more potential parallelism than any single archit ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
ion Lawrence A. Crowl Oregon State University and Thomas J. LeBlanc University of Rochester Parallel programming involves finding the potential parallelism in an application and mapping it to the architecture at hand. Since a typical application has more potential parallelism than any single architecture can exploit effectively, programmers usually limit their focus to the parallelism that the available control constructs express easily and that the given architecture exploits efficiently. This approach produces programs that exhibit much less parallelism than exists in the application, and whose performance depends critically on the underlying hardware and software. We argue for an alternative approach based on control abstraction. Control abstraction is the process by which programmers define new control constructs, specifying constraints on statement ordering separately from an implementation of that ordering. With control abstraction programmers can define and use a rich variety o...

