Results 1 -
7 of
7
Statically Checkable Pattern Abstractions
- In 2nd ACM Int. Conf. on Functional Programming
, 1997
"... Pattern abstractions increase the expressiveness of pattern matching, enabling the programmer to describe a broader class of regular forests with patterns. Furthermore, pattern abstractions support code reuse and code factoring, features that facilitate maintenance and evolution of code. Past resear ..."
Abstract
-
Cited by 13 (0 self)
- Add to MetaCart
Pattern abstractions increase the expressiveness of pattern matching, enabling the programmer to describe a broader class of regular forests with patterns. Furthermore, pattern abstractions support code reuse and code factoring, features that facilitate maintenance and evolution of code. Past research on pattern abstractions has generally ignored the aspect of compile-time checks for exhaustiveness and redundancy. In this paper we propose a class of expressive patterns that admits these compile-time checks.
Abstract Machines for Dynamic Computation
- UNIVERSITY OF EDINBURGH
, 2001
"... In this thesis we address the challenges associated with the provision of dynamic software architectures. These are systems in which programs are constructed from separately compiled units with a facility for the replacement of these units at runtime. Typical examples of applications which will bene ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
In this thesis we address the challenges associated with the provision of dynamic software architectures. These are systems in which programs are constructed from separately compiled units with a facility for the replacement of these units at runtime. Typical examples of applications which will benefit from this dynamic approach are long-lived systems in which downtime is highly undesirable, for example, web-servers, database engines, and equipment controllers. In addition, dynamic software architectures are also gaining popularity with the recent advent of wide-area Internet applications, where it is often impractical to compile a program in its entirety or begin execution in a single step. Our approach to dynamic software architectures differs from earlier attempts in that we guarantee the safety of the replacement operation. This is done by founding our techniques on the rigour of strong typing. In the first half of the thesis we take an existing static software architecture with strong typing facilities and modular program construction, namely the Standard ML platform, and equip
Optimizing Pattern Matching
- In ICFP’01 Proceedings
, 2001
"... We present improvements to the backtracking technique of pattern-matching compilation. Several optimizations are introduced, such as commutation of patterns, use of exhaustiveness information, and control ow optimization through the use of labeled static exceptions and context information. These opt ..."
Abstract
-
Cited by 8 (0 self)
- Add to MetaCart
We present improvements to the backtracking technique of pattern-matching compilation. Several optimizations are introduced, such as commutation of patterns, use of exhaustiveness information, and control ow optimization through the use of labeled static exceptions and context information. These optimizations have been integrated in the ObjectiveCaml compiler. They have shown good results in increasing the speed of pattern-matching intensive programs, without increasing nal code size.
When Do Match-Compilation Heuristics Matter?
, 2000
"... Modern, statically typed, functional languages define functions by pattern matching. Although pattern matching is defined in terms of sequential checking of a value against one pattern after another, real implementations translate patterns into automata that can test a value against many pattern ..."
Abstract
-
Cited by 7 (1 self)
- Add to MetaCart
Modern, statically typed, functional languages define functions by pattern matching. Although pattern matching is defined in terms of sequential checking of a value against one pattern after another, real implementations translate patterns into automata that can test a value against many patterns at once. Decision trees are popular automata.
The Translation Power of the Futamura Projections
- In Perspectives of Systems Informatics, volume 2890 of LNCS
, 2003
"... Despite practical successes with the Futamura projections, it has been an open question whether target programs produced by specializing interpreters can always be as e#cient as those produced by a translator. We show that, given a Jones-optimal program specializer with static expression reducti ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Despite practical successes with the Futamura projections, it has been an open question whether target programs produced by specializing interpreters can always be as e#cient as those produced by a translator. We show that, given a Jones-optimal program specializer with static expression reduction, there exists for every translator an interpreter which, when specialized, can produce target programs that are at least as fast as those produced by the translator. This is not the case if the specializer is not Jones-optimal. We also examine Ershov's generating extensions, give a parameterized notion of Jones optimality, and show that there is a class of specializers that can always produce residual programs that match the size and time complexity of programs generated by an arbitrary generating extension. This is the class of generation universal specializers. We study these questions on an abstract level, independently of any particular specialization method.
Jones Optimality, Binding-Time Improvements, and the Strength of Program Specializers
"... Jones optimality tells us that a program specializer is strong enough to remove an entire level of self-interpretation. We show that Jones optimality, which was originally aimed at the Futamura projections, plays an important role in binding-time improvements. The main results show that, regardless ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Jones optimality tells us that a program specializer is strong enough to remove an entire level of self-interpretation. We show that Jones optimality, which was originally aimed at the Futamura projections, plays an important role in binding-time improvements. The main results show that, regardless of the binding-time improvements which we apply to a source program, no matter how extensively, a specializer that is not Jones-optimal is strictly weaker than a specializer which is Jones optimal. By viewing a binding-time improver as a generating extension of a self-interpreter, we can connect our results with previous work on the interpretive approach.
PMC: A Programming Language for Embedded Systems
- In Proc. Int. Workshop Formal Methods for Industrial Critical Systems
, 1999
"... The process algebra pmc (Processes with Multiple Clocks) extends Milner's ccs with a notion of qualitative time called clocks. The algebra has been used for specifying industrial size case-studies. Based on the algebra pmc, we introduce a programming language (also named PMC) for embedded systems. T ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
The process algebra pmc (Processes with Multiple Clocks) extends Milner's ccs with a notion of qualitative time called clocks. The algebra has been used for specifying industrial size case-studies. Based on the algebra pmc, we introduce a programming language (also named PMC) for embedded systems. The language features point-to-point communication, multi-synchronization, local deterministic parallel composition, global non-deterministic parallel composition, and a restricted form of mixed input/output guarded choice. The expression language includes constructors, tuples, and patterns as known from SML. The language is strongly typed. The PMC language provides the user with a clean, yet flexible, separation between the abstract programming of an embedded system, and the low-level, hardware specific details of for instance device drivers. We have a prototype compiler that compiles PMC to Java byte code. Concurrency does not necessarily give rise to considerable computation overhead. In im...

