Using context-free grammars in Haskell to parse jazz chord progressions