Media Summary: In the course of writing I wanted to write a TupleN# operator that takes ... I introduce the new ImpredicativeTypes extension and show a way to use it to make indexing into binary trees convenient. Code at ... In this broadcast of my talk at the Haskell Implementors' Workshop, I describe how GHC infers a generalized type for definitions ...

Rae Inferring The Arity Of - Detailed Analysis & Overview

In the course of writing I wanted to write a TupleN# operator that takes ... I introduce the new ImpredicativeTypes extension and show a way to use it to make indexing into binary trees convenient. Code at ... In this broadcast of my talk at the Haskell Implementors' Workshop, I describe how GHC infers a generalized type for definitions ... Recent work within GHC has opened up questions about which constraints should be generalized (that is, included in an Spurred on by I discuss how GHC currently is pretty arbitrary in when it decides to ... We like to think of Haskell as being order-independent: no matter what order you put your declarations in, your program means ...

I discuss the basics of Haskell instance selection, getting as far as simple overlapping instances. There is a reference to the ... This video is a continuation of last week's ( where I actually get to levity-polymorphic functions, and ... I introduce the -XDerivingVia extension and how it can help you avoid writing boilerplate instances, explaining a bit about how it ... This video demonstrates a way to access the full type-checker environment from inside a Template Haskell splice. The use here is ... I demonstrate how using impredicative types and dynamic types (as they work in Haskell) can be useful for parsing a number in ...

Photo Gallery

@rae: Inferring the arity of zipWith, with lots of type-level hackery
@rae: Implementing an arity-polymorphic unboxed tuple operator
@rae: A not-so-quick look at Quick Look impredicativity
@rae: Generalization is hard, but somebody's got to do it
@rae: Figuring out what constraints to generalize is hard
@rae: GHC defaults type representations at pretty arbitrary places
@rae: The monomorphism restriction in Haskell causes order dependency. Ack!
@rae: Basics of Haskell instance selection
@rae: Use closed type families for beautiful type inference
@rae: Levity polymorphism (for real)
@rae: Avoid boilerplate instances with -XDerivingVia
@rae: How to sneak an access to the type-checker from Template Haskell
View Detailed Profile
@rae: Inferring the arity of zipWith, with lots of type-level hackery

@rae: Inferring the arity of zipWith, with lots of type-level hackery

I build a version of zipWith that can

@rae: Implementing an arity-polymorphic unboxed tuple operator

@rae: Implementing an arity-polymorphic unboxed tuple operator

In the course of writing https://github.com/ghc-proposals/ghc-proposals/pull/475, I wanted to write a TupleN# operator that takes ...

@rae: A not-so-quick look at Quick Look impredicativity

@rae: A not-so-quick look at Quick Look impredicativity

I introduce the new ImpredicativeTypes extension and show a way to use it to make indexing into binary trees convenient. Code at ...

@rae: Generalization is hard, but somebody's got to do it

@rae: Generalization is hard, but somebody's got to do it

In this broadcast of my talk at the Haskell Implementors' Workshop, I describe how GHC infers a generalized type for definitions ...

@rae: Figuring out what constraints to generalize is hard

@rae: Figuring out what constraints to generalize is hard

Recent work within GHC has opened up questions about which constraints should be generalized (that is, included in an

@rae: GHC defaults type representations at pretty arbitrary places

@rae: GHC defaults type representations at pretty arbitrary places

Spurred on by https://gitlab.haskell.org/ghc/ghc/-/issues/20686, I discuss how GHC currently is pretty arbitrary in when it decides to ...

@rae: The monomorphism restriction in Haskell causes order dependency. Ack!

@rae: The monomorphism restriction in Haskell causes order dependency. Ack!

We like to think of Haskell as being order-independent: no matter what order you put your declarations in, your program means ...

@rae: Basics of Haskell instance selection

@rae: Basics of Haskell instance selection

I discuss the basics of Haskell instance selection, getting as far as simple overlapping instances. There is a reference to the ...

@rae: Use closed type families for beautiful type inference

@rae: Use closed type families for beautiful type inference

In an attempt to get better type

@rae: Levity polymorphism (for real)

@rae: Levity polymorphism (for real)

This video is a continuation of last week's (https://youtu.be/Mb_B-j8ePfc) where I actually get to levity-polymorphic functions, and ...

@rae: Avoid boilerplate instances with -XDerivingVia

@rae: Avoid boilerplate instances with -XDerivingVia

I introduce the -XDerivingVia extension and how it can help you avoid writing boilerplate instances, explaining a bit about how it ...

@rae: How to sneak an access to the type-checker from Template Haskell

@rae: How to sneak an access to the type-checker from Template Haskell

This video demonstrates a way to access the full type-checker environment from inside a Template Haskell splice. The use here is ...

@rae: Impredicative types and dynamic types -- useful in parsing JSON

@rae: Impredicative types and dynamic types -- useful in parsing JSON

I demonstrate how using impredicative types and dynamic types (as they work in Haskell) can be useful for parsing a number in ...