Media Summary: This more introductory video walks through Haskell's kind system, giving a little motivation for why Haskell has kinds at all, and ... I walk through the four different strategies GHC uses to implement `deriving` when declaring a new datatype. Previous video ... I walk through the principles written down as part of a proposal to update GHC's

Rae Scopedtypevariables And Its Quirks - Detailed Analysis & Overview

This more introductory video walks through Haskell's kind system, giving a little motivation for why Haskell has kinds at all, and ... I walk through the four different strategies GHC uses to implement `deriving` when declaring a new datatype. Previous video ... I walk through the principles written down as part of a proposal to update GHC's This video walks through what a type-checker plugin does and demonstrates a very basic one. Toward the beginning of the video, ... I explain Haskell's `Coercible` feature, and why we sometimes need role annotations to keep our code working correctly. I introduce the new ImpredicativeTypes extension and show a way to use it to make indexing into binary trees convenient. Code at ...

I explore two examples of types that have more complex kinds: a generalization of Functor that allows fmap to be constrained (so ... I explain the infrequently-written but often-implied -XMonoLocalBinds extension and how it prevents let-generalization. We explore the difference in evaluation behavior between datatypes, strict datatypes, and newtypes, which initially came as a ... Recent work within GHC has opened up questions about which constraints should be generalized (that is, included in an inferred ... An introduction to a new video series by Tweager Richard Eisenberg, where he will blather on about Haskell, share some ... Check out my sponsor Brilliant, free for 30 days (and get 20% off an annual premium subscription!) by using this link: ...

Once again Greg and Andrew connect to talk about little efficiency gains in R. Sign up to be notified when our book about data ... This week's entry in the series on length-indexed vectors is about existentials, and how we need them in order to define functions ... Spurred on by I discuss how GHC currently is pretty arbitrary in when it decides to ... This is the third installment in a series about exploring type-level programming through length-indexed vectors. This one covers ...

Photo Gallery

@rae: ScopedTypeVariables and its quirks
@rae: An introduction to Haskell's kinds
@rae: All about `deriving` in GHC
@rae: The principles behind an update to scoped type variables
@rae: Type-checker plugins
@rae: Use Coercible for zero-cost abstractions
@rae: A not-so-quick look at Quick Look impredicativity
@rae: Getting a little fancy with Haskell's kinds
@rae: Let-generalization is confusing
@rae: Newtypes and strict datatypes behave differently
@rae: Figuring out what constraints to generalize is hard
@rae: Hello, world!
View Detailed Profile
@rae: ScopedTypeVariables and its quirks

@rae: ScopedTypeVariables and its quirks

I motivate the

@rae: An introduction to Haskell's kinds

@rae: An introduction to Haskell's kinds

This more introductory video walks through Haskell's kind system, giving a little motivation for why Haskell has kinds at all, and ...

@rae: All about `deriving` in GHC

@rae: All about `deriving` in GHC

I walk through the four different strategies GHC uses to implement `deriving` when declaring a new datatype. Previous video ...

@rae: The principles behind an update to scoped type variables

@rae: The principles behind an update to scoped type variables

I walk through the principles written down as part of a proposal to update GHC's

@rae: Type-checker plugins

@rae: Type-checker plugins

This video walks through what a type-checker plugin does and demonstrates a very basic one. Toward the beginning of the video, ...

@rae: Use Coercible for zero-cost abstractions

@rae: Use Coercible for zero-cost abstractions

I explain Haskell's `Coercible` feature, and why we sometimes need role annotations to keep our code working correctly.

@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: Getting a little fancy with Haskell's kinds

@rae: Getting a little fancy with Haskell's kinds

I explore two examples of types that have more complex kinds: a generalization of Functor that allows fmap to be constrained (so ...

@rae: Let-generalization is confusing

@rae: Let-generalization is confusing

I explain the infrequently-written but often-implied -XMonoLocalBinds extension and how it prevents let-generalization.

@rae: Newtypes and strict datatypes behave differently

@rae: Newtypes and strict datatypes behave differently

We explore the difference in evaluation behavior between datatypes, strict datatypes, and newtypes, which initially came as a ...

@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 inferred ...

@rae: Hello, world!

@rae: Hello, world!

An introduction to a new video series by Tweager Richard Eisenberg, where he will blather on about Haskell, share some ...

Test Multiple Variables at Once to Optimize Anything

Test Multiple Variables at Once to Optimize Anything

Check out my sponsor Brilliant, free for 30 days (and get 20% off an annual premium subscription!) by using this link: ...

Today I learned in R: skimr and %in%

Today I learned in R: skimr and %in%

Once again Greg and Andrew connect to talk about little efficiency gains in R. Sign up to be notified when our book about data ...

@rae: Existentials and writing functions for length-indexed vectors

@rae: Existentials and writing functions for length-indexed vectors

This week's entry in the series on length-indexed vectors is about existentials, and how we need them in order to define functions ...

@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: Type families help define functions over length-indexed vectors

@rae: Type families help define functions over length-indexed vectors

This is the third installment in a series about exploring type-level programming through length-indexed vectors. This one covers ...