ICFP Workshops 2020
25th ACM SIGPLAN International Conference on Functional Programming (ICFP 2020)
Powered by
Conference Publishing Consulting

13th ACM SIGPLAN International Haskell Symposium (Haskell 2020), August 27, 2020, Virtual Event, USA

Haskell 2020 – Preliminary Table of Contents

Contents - Abstracts - Authors

13th ACM SIGPLAN International Haskell Symposium (Haskell 2020)

Frontmatter

Title Page


Message from the Chairs


Experience Reports

Describing Microservices using Modern Haskell (Experience Report)
Alejandro Serrano and Flavio Corpa
(47 Degrees, n.n.)


Article Search
Eliminating Bugs with Dependent Haskell (Experience Report)
Noam Zilberstein
(Facebook, n.n.)


Article Search

Functional Pearls

A Graded Monad for Deadlock-Free Concurrency (Functional Pearl)
Andrej Ivašković and Alan Mycroft
(University of Cambridge, UK)


Article Search
Finger Trees Explained Anew and Slightly Simplified (Functional Pearl)
Koen Claessen
(Chalmers University of Technology, Sweden)


Article Search
Stitch: The Sound Type-Indexed Type Checker (Functional Pearl)
Richard A. Eisenberg
(Tweag I/O, France; Bryn Mawr College, USA)
A classic example of the power of generalized algebraic datatypes (GADTs) to verify a delicate implementation is the type-indexed expression AST. This functional pearl refreshes this example, casting it in modern Haskell using many of GHC's bells and whistles. The Stitch interpreter is a full executable interpreter, with a parser, type checker, common-subexpression elimination, and a REPL. Making heavy use of GADTs and type indices, the Stitch implementation is clean Haskell code and serves as an existence proof that Haskell's type system is advanced enough for the use of fancy types in a practical setting. The paper focuses on guiding the reader through these advanced topics, enabling them to adopt the techniques demonstrated here.

Article Search
Type Your Matrices for Great Good: A Haskell Library of Typed Matrices and Applications (Functional Pearl)
Armando Santos and José N. Oliveira
(University of Minho, Portugal)
We study a simple inductive data type for representing correct-by-construction matrices. Despite its simplicity, it can be used to implement matrix-manipulation algorithms efficiently and safely, performing in some cases faster than existing alternatives even though the algorithms are written in a direct and purely functional style. A rich collection of laws makes it possible to derive and optimise these algorithms using equational reasoning, avoiding the notorious off-by-one indexing errors when fiddling with matrix dimensions. We demonstrate the usefulness of the data type on several examples, and highlight connections to related topics in category theory.

Article Search

Research Papers

Assessing the Quality of Evolving Haskell Systems by Measuring Structural Inequality
Sander Kamps, Bastiaan Heeren, and Johan Jeuring
(Open University of the Netherlands, Netherlands; Utrecht University, Netherlands)
Software metrics are used to measure the quality of a software system, and to understand the evolution of the system's quality over time. In this paper we report on an empirical study that investigates whether structural degradation in Haskell systems is related to decreasing software quality. For our study we use three metrics that measure internal attributes at the level of Haskell modules: intra-modular complexity (cohesion), inter-modular complexity (coupling), and module size. For these metrics, we calculate the Gini coefficient, which is a measure of the inequality in a distribution of values within a certain population, and the deviation of the population's central tendency from an empirically established ideal value. We develop a method to track the evolution, and measure the correlation between the calculated system-level information and post-release defects.
The results show that: (1) post-release defects are significantly correlated with the degree of inequality between the size of modules, (2) the inequality measure is able to indicate significant structural shifts in Haskell source code, and (3) the deviation of a population's central tendency from an ideal value can serve as a benchmark to evaluate the structural characteristics of a Haskell system. The results, however, do not show that a combined measure for inequality and ideal value deviation increases the ability to indicate the defect proneness of Haskell source code.

Article Search
Composing Effects into Tasks and Workflows
Yves Parès, Jean-Philippe Bernardy, and Richard A. Eisenberg
(Tweag I/O, France; University of Gothenburg, Sweden; Bryn Mawr College, USA)
Data science applications tend to be built by composing tasks: discrete manipulations of data. These tasks are arranged in directed acyclic graphs, and many frameworks exist within the data science community supporting such a structure, which is called a workflow. In realistic applications, we want to be able to both analyze a workflow in the absence of data, and to execute the workflow with data.
This paper combines effect handlers with arrow-like structures to abstract out data science tasks. This combination of techniques enables a modular design of workflows. Additionally, these workflows can both be analyzed prior to running (e.g., to provide early failure) and run conveniently. Our work is directly motivated by real-world scenarios, and we believe that our approach is applicable to new data science and machine learning applications and frameworks.

Article Search
Effect Handlers in Haskell, Evidently
Ningning Xie and Daan Leijen
(Microsoft Research, n.n.)


Article Search
Scripted Signal Functions
David Stuart


Article Search
Staged Sums of Products
Matthew Pickering, Andres Löh, and Nicolas Wu
(University of Bristol, UK; Well-Typed LLP, n.n.; Imperial College London, UK)


Article Search
Towards Secure IoT Programming in Haskell
Nachiappan Valliappan, Alejandro Russo, Koen Claessen, and Robert Krook
(Chalmers University of Technology, Sweden)


Article Search

proc time: 2.93