Results 1  10
of
19
Syntactic Accidents in Program Analysis: On the Impact of the CPS Transformation
 Journal of Functional Programming
, 2000
"... Our results formalize and confirm a folklore theorem about traditional bindingtime analysis, namely that CPS has a positive effect on binding times. What may be more surprising is that the benefit does not arise from a standard refinement of program analysis, as, for instance, duplicating continuati ..."
Abstract

Cited by 28 (9 self)
 Add to MetaCart
Our results formalize and confirm a folklore theorem about traditional bindingtime analysis, namely that CPS has a positive effect on binding times. What may be more surprising is that the benefit does not arise from a standard refinement of program analysis, as, for instance, duplicating continuations.
Memoization in typedirected partial evaluation
 PROCEEDINGS OF THE 2002 ACM SIGPLAN/SIGSOFT CONFERENCE ON GENERATIVE PROGRAMMING AND COMPONENT ENGINEERING, NUMBER 2487 IN LECTURE NOTES IN COMPUTER SCIENCE
, 2002
"... We use a code generator—typedirected partial evaluation— to verify conversions between isomorphic types, or more precisely to verify that a composite function is the identity function at some complicated type. A typed functional language such as ML provides a natural support to express the function ..."
Abstract

Cited by 14 (6 self)
 Add to MetaCart
(Show Context)
We use a code generator—typedirected partial evaluation— to verify conversions between isomorphic types, or more precisely to verify that a composite function is the identity function at some complicated type. A typed functional language such as ML provides a natural support to express the functions and typedirected partial evaluation provides a convenient setting to obtain the normal form of their composition. However, offtheshelf typedirected partial evaluation turns out to yield gigantic normal forms. We identify that this gigantism is due to redundancies, and that these redundancies originate in the handling of sums, which uses delimited continuations. We successfully eliminate these redundancies by extending typedirected partial evaluation with memoization capabilities. The result only works for pure functional programs, but it provides an unexpected use of code generation and it yields ordersofmagnitude improvements both in time and in space for type isomorphisms.
A Simple Take on Typed Abstract Syntax in Haskelllike Languages
 In Proceedings of the 5th International Symposium on Functional and Logic Programming (FLOPS ’01
, 2000
"... We present a simple way to program typed abstract syntax in a language following a HindleyMilner typing discipline, such as Haskell and ML, and we apply it to automate two proofs about normalization functions as embodied in typedirected partial evaluation for the simply typed lambda calculus: norm ..."
Abstract

Cited by 8 (4 self)
 Add to MetaCart
We present a simple way to program typed abstract syntax in a language following a HindleyMilner typing discipline, such as Haskell and ML, and we apply it to automate two proofs about normalization functions as embodied in typedirected partial evaluation for the simply typed lambda calculus: normalization functions (1) preserve types and (2) yield long betaeta normal forms.
Logical Data Expiration
"... Data expiration is an essential component of data warehousing solutions: whenever large amounts of data are repeatedly collected over a period of time, it is essential to have a clear approach to identifying parts of the data nolonger needed and a policy that allows disposing and/or archiving these ..."
Abstract

Cited by 5 (3 self)
 Add to MetaCart
Data expiration is an essential component of data warehousing solutions: whenever large amounts of data are repeatedly collected over a period of time, it is essential to have a clear approach to identifying parts of the data nolonger needed and a policy that allows disposing and/or archiving these parts of the data. Such policies are necessary even if adding storage to accommodate an evergrowing collection of data were possible, since the growing amount of data needs to be examined during querying and in turn leads to deterioration of query performance over time. The approaches
A new onepass transformation into monadic normal form
 In CC, volume 2622 of LNCS
, 2003
"... Abstract. We present a translation from the callbyvalue λcalculus to monadic normal forms that includes shortcut boolean evaluation. The translation is higherorder, operates in one pass, duplicates no code, generates no chains of thunks, and is properly tail recursive. It makes a crucial use of ..."
Abstract

Cited by 5 (1 self)
 Add to MetaCart
(Show Context)
Abstract. We present a translation from the callbyvalue λcalculus to monadic normal forms that includes shortcut boolean evaluation. The translation is higherorder, operates in one pass, duplicates no code, generates no chains of thunks, and is properly tail recursive. It makes a crucial use of symbolic computation at translation time. 1
On Obtaining Knuth, Morris, and Pratt's String Matcher by Partial Evaluation
, 2002
"... We present the first formal proof that partial evaluation of a quadratic string matcher can yield the precise behaviour of Knuth, Morris, and Pratt's linear string matcher. Obtaining a KMPlike string matcher is a canonical example of partial evaluation: starting from the naive, quadratic progr ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
(Show Context)
We present the first formal proof that partial evaluation of a quadratic string matcher can yield the precise behaviour of Knuth, Morris, and Pratt's linear string matcher. Obtaining a KMPlike string matcher is a canonical example of partial evaluation: starting from the naive, quadratic program checking whether a pattern occurs in a text, one ensures that backtracking can be performed at partialevaluation time (a bindingtime shift that yields a staged string matcher); specializing the resulting staged program yields residual programs that do not back up on the text, a la KMP. We are not aware, however, of any formal proof that partial evaluation of a staged string matcher precisely yields the KMP string matcher, or in fact any other specific string matcher. In this article, we present a staged string matcher and we formally prove that it performs the same sequence of comparisons between pattern and text as the KMP string matcher. To this end, we operationally specify each of the programming languages in which the matchers are written, and we formalize each sequence of comparisons with a trace semantics. We also state the (mild) conditions under which specializing the staged string matcher with respect to a pattern string provably yields a specialized string matcher whose size is proportional to the length of this pattern string and whose time complexity is proportional to the length of the text string. Finally, we show how tabulating one of the functions in this staged string matcher gives rise to the `next' table of the original KMP algorithm. The method scales for obtaining other linear string matchers, be they known or new.