Vinyl is a general solution to the records problem in Haskell using type level strings and other modern GHC features, featuring static structural typing (with a subtyping relation), and automatic row-polymorphic lenses. All this is possible without Template Haskell. First, install Vinyl from Hackage: cabal update cabal install vinyl Let’s work through a quick example. We’ll need to enable some lan