This is a distillation of @acowley's Frames down to it's simplest pieces in order to learn about Frames and structural typing with row type polymorphism in Haskell from first principles.
See Main.hs for the 113 lines resulting from distilling it that may also help you understand the concept better.
I tried the usual look at the docs, try some examples, modify them, but didn't get a deep enough understanding to be able to diff frames. This exercise helped me deeply understand and I made a library that can diff Frames to solve some of my use cases.