Strongly typed heterogeneous collections

Oleg Kiselyov, Ralf Lämmel, Keean Schupke

Research output: Chapter in Book/Report/Conference proceedingConference contribution

98 Citations (Scopus)

Abstract

A heterogeneous collection is a datatype that is capable of storing data of different types, while providing operations for look-up, update, iteration, and others. There are various kinds of heterogeneous collections, differing in representation, invariants, and access operations. We describe HLIST - a Haskell library for strongly typed heterogeneous collections including extensible records. We illustrate HLIST's benefits in the context of type-safe database access in Haskell. The HLIST library relies on common extensions of Haskell 98. Our exploration raises interesting issues regarding Haskell's type system, in particular, avoidance of overlapping instances, and reification of type equality and type unification.

Original languageEnglish
Title of host publicationProceedings of the ACM SIGPLAN 2004 Haskell Workshop, Haskell'04
PublisherAssociation for Computing Machinery
Pages96-107
Number of pages12
ISBN (Print)1581138504, 9781581138504
DOIs
Publication statusPublished - 2004
EventProceedings of the ACM SIGPLAN 2004 Haskell Workshop, Haskell'04 - Snowbird, UT, United States
Duration: 2004 Sep 222004 Sep 22

Publication series

NameProceedings of the ACM SIGPLAN 2004 Haskell Workshop, Haskell'04

Other

OtherProceedings of the ACM SIGPLAN 2004 Haskell Workshop, Haskell'04
CountryUnited States
CitySnowbird, UT
Period04/9/2204/9/22

Keywords

  • Collections
  • Dependently typed programming
  • Extensible records
  • Haskell
  • Type equality
  • Type improvement
  • Type-indexed rows
  • Type-safe database access

ASJC Scopus subject areas

  • Engineering(all)

Cite this

Kiselyov, O., Lämmel, R., & Schupke, K. (2004). Strongly typed heterogeneous collections. In Proceedings of the ACM SIGPLAN 2004 Haskell Workshop, Haskell'04 (pp. 96-107). (Proceedings of the ACM SIGPLAN 2004 Haskell Workshop, Haskell'04). Association for Computing Machinery. https://doi.org/10.1145/1017472.1017488