filmov
tv
MuniHac 2020: Richard Eisenberg - Partial Type Constructors

Показать описание
Title: Partial Type Constructors
Speaker: Richard Eisenberg
When we describe the type Set a, we say that this type makes sense for any a. But this is a small lie: it really only makes sense for types a that have an ordering – that is, types for which Ord a holds. This small lie has far-reaching consequences. It means that we cannot write a Functor instance for Set, it means we might accidentally write uncallable functions that take a Set, and it means we must repetitively write Ord a ... constraints on every function working with Sets.
This talk will explore the possibility of explicitly partial type constructors, where we can declare loudly that types like Set work only with some type arguments, but not others. The design proposed improves error messages, simplifies type signatures, and allows instances like Functor over Sets.
Speaker: Richard Eisenberg
When we describe the type Set a, we say that this type makes sense for any a. But this is a small lie: it really only makes sense for types a that have an ordering – that is, types for which Ord a holds. This small lie has far-reaching consequences. It means that we cannot write a Functor instance for Set, it means we might accidentally write uncallable functions that take a Set, and it means we must repetitively write Ord a ... constraints on every function working with Sets.
This talk will explore the possibility of explicitly partial type constructors, where we can declare loudly that types like Set work only with some type arguments, but not others. The design proposed improves error messages, simplifies type signatures, and allows instances like Functor over Sets.
MuniHac 2020: Richard Eisenberg - Partial Type Constructors
Write a GHC extension in 30 minutes by Richard Eisenberg
Richard Eisenberg on Simplifying Constraint Solving in GHC
MuniHac 2020: Lars Hupel - Theorems for Free
MuniHac 2022 - Cass Alexandru: Structured Traversals for (Mutually) Recursive Algebraic Data Types
MuniHac 2020: Austin Huang - Hasktorch: Differentiable Functional Programming in Haskell
MuniHac 2020 Workshop: Michael Sperber - Control your Effects
MuniHac 2020: Duncan Coutts - Contravariant Logging: How to add logging without getting grumpy
MuniHac 2020 Workshop: Christiaan Baaij - Building a RISC-V SoC with Haskell and Python
MuniHac 2020: Nicolas Wu - Persistence makes a Difference
MuniHac 2020 Workshop: Manuel Bärenz - Video & Game Live Coding in Haskell
MuniHac 2020: Andrew Lelechenko - Polynomials in Haskell
MuniHac 2020 Workshop: Pepe Iborra - Let's write a Haskell Language Server Plugin
Richard Eisenberg – Parameters of Many Flavors
MuniHac 2020 Workshop: Andres Löh - Liquid Haskell
MuniHac 2020: Tamar Christina - The new Windows I/O manager (WinIO) in GHC
MuniHac 2020: Jamie Willis - Exploring Parsley
@rae: Why Haskell can't get rid of Proxy (yet)
MuniHac 2019: Fast Downward: Solving Declarative Planning problems in Haskell
[Haskell'22] Eiger: Auditable, executable, flexible legal regulations
@rae: Hello, world!
Opening Ceremony & Rob Rix - “Languages all the way down” @ ZuriHac 2020
Manifolds as Haskell types
Thomas Dietert-Types as Program Specifications: A Intro to Type-Level Programming in Haskell λC 2019...
Комментарии