Thursday, 20 October 2011, 14:00
Cybernetica Bldg (Akadeemia tee 21), room B101
Slides from the talk [pdf]
Abstract: Records, that is, collections of named fields, are a fundamental component of many programming languages. Common record systems only provide access to individual record fields. However, it is often useful to have generic record combinators, that is, functions that work with complete records of varying structure. Traditionally, generic record combinators can only be implemented in dynamically typed languages.
In this talk, I will present a record system that makes it possible to define generic record combinators without losing static type checking. I will introduce the concept of record type families, on which this system is based. Furthermore, I will show how this record system can be implemented as a Haskell library using only language features available today. Advanced type system concepts like type families and higher-rank polymorphism play a key role in this endeavor.