Patrick Hicks

dblp:13/450 · DBLP profile ↗
← Back
3ranked-venue papers
1as first author
0since 2021 · last 1998
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 2Systems, architecture and hardware · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
1 paper
Programming languages and type systems · 67% Compilers and program optimization · 33%

Topics — the 2 heaviest of 3, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › type systems › polymorphism
let-polymorphism
0.011998
Higher-Order unCurrying · POPL 1998
Programming languages and type systems
type systems
0.011998
Higher-Order unCurrying · POPL 1998

Methods — techniques the papers use, named apart from their topics

operational semantics · 0.0deductive system · 0.0algorithm w · 0.0
YearPublicationVenuePosition
1998 Higher-Order Arity Raising
abstract
Arity raising, also known as variable splitting or flattening, is the program optimization which transforms a function of one argument into a function of several arguments by decomposing the structure of the original one argument into individual components in that structure. This optimization eliminates the need for the structuring of the components and also allows more arguments to be passed in registers during a function call. We present a formal specification of arity raising for a higher-order functional language. This specification supports the general arity raising of functions, even for functions which are passed as arguments or returned as values. We define a practical algorithm, based on algorithm W, which implements arity raising, and we prove this algorithm sound with respect to the deductive system. These results provide a declarative framework for reasoning about arity raising and support a richer form of the transformation than is currently found in compilers for functional languages.
John Hannan, Patrick Hicks
ICFP2
1998 Higher-Order unCurrying
abstract
We present a formal specification of unCurrying for a higherorder, functional language with ML-style let-polymorphism. This specification supports the general unCurrying of functions, even for functions which are passed as arguments or returned as values. The specification also supports partial unCurrying of any consecutive parameters of a function, rather than only unCurrying all of a function's parameters. We present the specification as a deductive system which axiomatizes a judgment relating a source term with an unCurried form of the term. We prove that this system relates only typable terms and that it is correct with respect to an operational semantics. We define a practical algorithm, based on algorithm W, which implements the unCurrying and prove this algorithm sound and complete with respect to the deductive system. This algorithm generates maximally unCurried forms of source terms. These results provide a declarative framework for reasoning about unCurrying and support a richer form of unCurrying than is currently found in compilers for functional languages.
John Hannan, Patrick Hicks
POPL2
1997 Analysis of power consumption in memory hierarchies
abstract
In this paper, we note and analyze a key trade-off: as the complexity of caches increases (higher set-associativity, larger block size, and larger overall size), the power consumed by a cache access increases.However, because the hit rate also increases, the number of main memory accesses decreases and thus the power consumed by a memory access decreases.Recent papers which consider the power consumption of caches tend to ignore hit rates.This is unfortunate, because it is undesirable to have energy-efficient caches which are also very slow.Hit rates also play a key role in truly evaluating the energy efficiency of a cache, because low hit rates lead to more frequent main memory accesses which consume more power than cache accesses.
Patrick Hicks, Matthew Walnock, Robert Michael Owens
ISLPED1