-
Towards Open Type Functions for Haskell,
T. Schrijvers, M. Sulzmann, S. Peyton Jones, and M. Chakravarty.
Presented at IFL 2007.
[slides]
[slides with Haskell intro]
[IFL paper]
[GHC Documentation]
[Examples]
[pptx]
[Details]
[Hide details]
We present a new extension of the Haskell type
system: functional programming at the type-level, with type functions.
Type functions interact in interesting ways with Haskell's two other type
system features: type classes and GADTs. Moreover, we show how they
can be used to substitute functional dependencies.
The typechecker's job now requires full-blown equational reasoning rather
than simple Herbrand term unification. With some reasonable conditions on
the type functions we can show that typechecking is still decidable; our
algorithm constructs a strongly normalizing TRS. As a side effect of
rewriting we generate proof terms, which serve as coercions for System FC.
The whole system has been implemented in GHC and will be available
shortly.
-
LNAI special issue on Recent Advances in Constraint Handling Rules,
editors: T. Fruehwirth and T. Schrijvers. [Call for Papers]
-
Winners of the 14th Prolog Programming Contest:
Paolo Pilozzi, Pieter Wuille and Tom Schrijvers won this year's contest
held at the occasion of ICLP 2007 in Porto, Portugal.
-
Transformation-based Indexing Techniques for CHR,
B. Sarna-Starosta, T. Schrijvers.
[Details]
[Hide details]
[Web page]
Multi-headed rules are essential for the expressiveness of CHR, but
incur a considerable performance penalty. Current indexing techniques
are often unable to address this problem. They are effective only when
matchings have a particular form, or offer good run-time complexity
rather than good absolute figures.
In this paper we describe three advanced indexing techniques:
(1) two program transformations that make other indexing techniques
more effective, (2) an index for ground terms more efficient than
hash tables, and (3) a post-processing program transformation that
eliminates runtime overhead of (1) and (2).
We compare these techniques with the current state of the
art, and give measurements of their effectiveness in K.U.Leuven CHR
and CHRd.
-
CCHR: the fastest CHR implementation, in C,
P. Wuille, T. Schrijvers, B. Demoen.
Accepted as system paper at CHR 2007.
[Details]
[Hide details]
CHR is usually compiled to high-level languages (like Prolog) that make it
hard or impossible to express low-level optimizations.
This is a pity, because it confines CHR to be a prototyping language only,
with an unacceptable performance for production quality software.
This paper presents CCHR, a CHR system embedded in the C programming language,
that compiles to low-level C code which is highly suitable for fine-grained
performance improvements.
In this way CCHR program performance comes close to matching that of native C,
and easily outperforms other CHR implementations.
-
Aggregates for CHR,
P. Van Weert, J. Sneyers, T. Schrijvers, B. Demoen.
Poster accepted at ICLP 2007.
Accepted at CHR 2007.
[techreport]
[Details]
[Hide details]
We extend the Constraint Handling Rules language with aggregates
such as sum, count, findall, and min.
The proposed extension features
nested aggregate expressions over guarded conjunctions of constraints,
a series of predefined aggregates,
and application-tailored user-defined aggregates.
We formally define the operational semantics of aggregates,
and show how incremental aggregate computation facilitates efficient implementations.
Case studies demonstrate that language support for aggregates
significantly reduces program size,
thus improving readability and maintainability considerably.
-
Proving termination of CHR in Prolog: A transformational approach,
P. Pilozzi, T. Schrijvers, D. De Schreye.
Extended abstract accepted at WST 2007.
[techreport]
-
CHRrp: Constraint Handling Rules with Rule Priorities,
L. De Koninck, T. Schrijvers, B. Demoen.
Accepted at PPDP 2007.
[techreport]
-
The Correspondence Between the Logical Algorithms Language and CHR,
L. De Koninck, T. Schrijvers, and B. Demoen.
Accepted at ICLP 2007.
[techreport]