Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

Jan Stolarek

dblp:15/9437 · DBLP profile ↗
← Back
8ranked-venue papers
4as first author
1since 2021 · last 2022
0000-0002-0140-5689ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 5 · 1 first-author · 1 since 2021Human-computer interaction and ubiquitous computing · 1 · 1 first-authorTheory of computation · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
1 paper
Programming languages and type systems · 100%

Topics — the 5 heaviest of 5, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › type inference
first-class polymorphism
0.412020
FreezeML: complete and easy type inference for first-class polymorphism · PLDI 2020
Programming languages and type systems › type systems › polymorphism
let-polymorphism
0.412020
FreezeML: complete and easy type inference for first-class polymorphism · PLDI 2020
Programming languages and type systems
type inference
0.412020
FreezeML: complete and easy type inference for first-class polymorphism · PLDI 2020
Programming languages and type systems
type systems
0.412020
FreezeML: complete and easy type inference for first-class polymorphism · PLDI 2020
Programming languages and type systems › functional language
ML
0.112020
FreezeML: complete and easy type inference for first-class polymorphism · PLDI 2020

Methods — techniques the papers use, named apart from their topics

type inference · 0.4quantifier instantiation · 0.4
YearPublicationVenuePosition
2022 Constraint-based type inference for FreezeML
abstract
FreezeML is a new approach to first-class polymorphic type inference that employs term annotations to control when and how polymorphic types are instantiated and generalised. It conservatively extends Hindley-Milner type inference and was first presented as an extension to Algorithm W. More modern type inference techniques such as HM(X) and OutsideIn(X) employ constraints to support features such as type classes, type families, rows, and other extensions. We take the first step towards modernising FreezeML by presenting a constraint-based type inference algorithm. We introduce a new constraint language, inspired by the Pottier/Rémy presentation of HM(X), in order to allow FreezeML type inference problems to be expressed as constraints. We present a deterministic stack machine for solving FreezeML constraints and prove its termination and correctness.
Frank Emrich, Jan Stolarek, James Cheney, Sam Lindley
Proc. ACM Program. Lang.2
2020 FreezeML: complete and easy type inference for first-class polymorphism
abstract
ML is remarkable in providing statically typed polymorphism without the programmer ever having to write any type annotations. The cost of this parsimony is that the programmer is limited to a form of polymorphism in which quantifiers can occur only at the outermost level of a type and type variables can be instantiated only with monomorphic types.
Frank Emrich, Sam Lindley, Jan Stolarek, James Cheney, Jonathan Coates
PLDI3
2020 A Modular, Practical Test for a Programming Course
abstract
In order to evaluate students' programming skills during a university course, a practical programming test can be administered, in which students are required to implement a short yet complete program according to a provided specification. However, such tests often suffer from drawbacks that prevent comprehensive and accurate assessment of students' abilities. In this paper we identify these drawbacks and then present a modular, practical test that avoids common testing pitfalls, as well as show how to design such a test based on course learning outcomes. A key aspect of our approach is adoption of modularity, which ensures independent and comprehensive verification of learning outcomes. We have used our method to evaluate object-oriented programming skills of undergraduate students over several years and have found that our testing approach has proven its validity and superiority over approaches employed previously.
Jan Stolarek, Przemyslaw Nowak
SIGCSE1
2019 Verified Self-Explaining Computation
Jan Stolarek, James Cheney
MPC1
2017 Imperative functional programs that explain their work
abstract
Program slicing provides explanations that illustrate how program outputs were produced from inputs. We build on an approach introduced in prior work, where dynamic slicing was defined for pure higher-order functional programs as a Galois connection between lattices of partial inputs and partial outputs. We extend this approach to imperative functional programs that combine higher-order programming with references and exceptions. We present proofs of correctness and optimality of our approach and a proof-of-concept implementation and experimental evaluation.
Wilmer Ricciotti, Jan Stolarek, Roly Perera, James Cheney
Proc. ACM Program. Lang.2
2015 Injective type families for Haskell
abstract
Haskell, as implemented by the Glasgow Haskell Compiler (GHC), allows expressive type-level programming. The most popular type-level programming extension is TypeFamilies, which allows users to write functions on types. Yet, using type functions can cripple type inference in certain situations. In particular, lack of injectivity in type functions means that GHC can never infer an instantiation of a type variable appearing only under type functions. In this paper, we describe a small modification to GHC that allows type functions to be annotated as injective. GHC naturally must check validity of the injectivity annotations. The algorithm to do so is surprisingly subtle. We prove soundness for a simplification of our algorithm, and state and prove a completeness property, though the algorithm is not fully complete. As much of our reasoning surrounds functions defined by a simple pattern-matching structure, we believe our results extend beyond just Haskell. We have implemented our solution on a branch of GHC and plan to make it available to regular users with the next stable release of the compiler.
Jan Stolarek, Simon L. Peyton Jones, Richard A. Eisenberg
Haskell1
2014 Promoting functions to type families in Haskell
abstract
Haskell, as implemented in the Glasgow Haskell Compiler (GHC), is enriched with many extensions that support type-level programming, such as promoted datatypes, kind polymorphism, and type families. Yet, the expressiveness of the type-level language remains limited. It is missing many features present at the term level, including case expressions, anonymous functions, partially-applied functions, and let expressions. In this paper, we present an algorithm - with a proof of correctness - to encode these term-level constructs at the type level. Our approach is automated and capable of promoting a wide array of functions to type families. We also highlight and discuss those term-level features that are not promotable. In so doing, we offer a critique on GHC's existing type system, showing what it is already capable of and where it may want improvement.
Richard A. Eisenberg, Jan Stolarek
Haskell2
2012 Improving Watermark Resistance against Removal Attacks Using Orthogonal Wavelet Adaptation
Jan Stolarek, Piotr Lipinski
SOFSEM1