Though, it comes with some loss of clarity. And might hurt your brain.
Note that his definition for `eq` using phantom types does not compile. It has two different notions of `a`: Int and Bool, but the type constructor for Eq only has one: Expr a -> Expr a -> Expr a.
Other than that, a great overview!
Does anyone have idea how was this video created?
What application was used?