Generic top-down discrimination for sorting and partitioning in linear time

5 Citationer (Scopus)

Abstract

We introduce the notion of discrimination as a generalization of both sorting and partitioning, and show that discriminators (discrimination functions) can be defined generically, by structural recursion on representations of ordering and equivalence relations. Discriminators improve the asymptotic performance of generic comparison-based sorting and partitioning, and can be implemented not to expose more information than the underlying ordering, respectively equivalence relation. For a large class of order and equivalence representations, including all standard orders for regular recursive first-order types, the discriminators execute in the worst-case linear time. The generic discriminators can be coded compactly using list comprehensions, with order and equivalence representations specified using Generalized Algebraic Data Types. We give some examples of the uses of discriminators, including the most-significant digit lexicographic sorting, type isomorphism with an associative-commutative operator, and database joins. Source code of discriminators and their applications in Haskell is included. We argue that built-in primitive types, notably pointers (references), should come with efficient discriminators, not just equality tests, since they facilitate the construction of discriminators for abstract types that are both highly efficient and representation-independent.

OriginalsprogEngelsk
TidsskriftJournal of Functional Programming
Vol/bind22
Udgave nummer3
Sider (fra-til)300-374
Antal sider75
ISSN0956-7968
DOI
StatusUdgivet - maj 2012

Fingeraftryk

Dyk ned i forskningsemnerne om 'Generic top-down discrimination for sorting and partitioning in linear time'. Sammen danner de et unikt fingeraftryk.

Citationsformater